Tarih saatini veya zaman damgas─▒ veri t├╝r├╝n├╝ MySQL'de kullanmal─▒ m─▒y─▒m?


Al─▒nan cevaba git


Bir tarih saat veya zaman damgas─▒ alan─▒ kullanman─▒z─▒ ve neden (MySQL kullanarak) kullanman─▒z─▒ tavsiye eder misiniz?

Sunucu taraf─▒nda PHP ile ├žal─▒┼č─▒yorum.


2570









Cevap say─▒s─▒n─▒ say: 30






MySQL'deki zaman damgalar─▒ genellikle kay─▒tlardaki de─či┼čiklikleri izlemek i├žin kullan─▒l─▒r ve kay─▒t her de─či┼čtirildi─činde her zaman g├╝ncellenir. Belirli bir de─čeri saklamak istiyorsan─▒z datetime alan─▒ kullanmal─▒s─▒n─▒z.

Bir UNIX zaman damgas─▒ veya bir yerel MySQL datetime alan─▒ kullanma konusunda karar vermek istedi─činizde, yerel formatla gidin. MySQL i├žinde hesaplamalar─▒ bu ┼čekilde yapabilirsiniz ("SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)") ve ("SELECT UNIX_TIMESTAMP(my_datetime)") PHP ile ├žal─▒┼čmak istiyorsan─▒z kayd─▒ sorgularken de─čerin format─▒n─▒ UNIX zaman damgas─▒na ├ževirmek kolayd─▒r .


1754







MySQL 5 ve ├╝zeri s├╝r├╝mlerde , TIMESTAMP de─čerleri, depolama i├žin ge├žerli zaman diliminden UTC'ye d├Ân├╝┼čt├╝r├╝l├╝r ve geri almak i├žin UTC'den ge├žerli zaman dilimine geri d├Ân├╝┼čt├╝r├╝l├╝r. (Bu yaln─▒zca TIMESTAMP veri t├╝r├╝ i├žin ge├žerlidir ve DATETIME gibi di─čer t├╝rler i├žin ge├žerli de─čildir .)

Varsay─▒lan olarak, her ba─člant─▒n─▒n ge├žerli saat dilimi sunucunun saatidir. Saat dilimi, MySQL Sunucusu Saat Dilimi Deste─či b├Âl├╝m├╝nde a├ž─▒kland─▒─č─▒ gibi ba─člant─▒ ba┼č─▒na ayarlanabilir .


886


2009-03-02





Her zaman DATETIME alanlar─▒n─▒ sat─▒r meta verileri d─▒┼č─▒nda (olu┼čturuldu─ču veya de─či┼čtirildi─či tarih) kullan─▒r─▒m.

MySQL belgelerinde belirtildi─či gibi :

DATETIME tipi, hem tarih hem de saat bilgisi i├žeren de─čerlere ihtiya├ž duydu─čunuzda kullan─▒l─▒r. MySQL, DATETIME de─čerlerini 'YYYY-AA-GG YG: AA: SS' format─▒nda al─▒r ve g├Âr├╝nt├╝ler. Desteklenen aral─▒k '1000-01-01 00:00:00' - '9999-12-31 23:59:59'.

...

TIMESTAMP veri t├╝r├╝, '1970-01-01 00:00:01' UTC ila '2038-01-09 03:14:07' UTC aral─▒─č─▒ndad─▒r. MySQL s├╝r├╝m├╝ne ve sunucunun ├žal─▒┼čt─▒─č─▒ SQL moduna ba─čl─▒ olarak de─či┼čen ├Âzelliklere sahiptir.

Genel kullan─▒mda TIMESTAMP'larda alt s─▒n─▒ra ula┼čma ihtimaliniz olduk├ža y├╝ksektir - ├Ârne─čin do─čum tarihini saklamak.


489







A┼ča─č─▒daki ├Ârnekler, TIMESTAMP tarih t├╝r├╝n├╝n, time-zone to 'america/new_york' nerede de─či┼čtirilmedi─čini de─či┼čtirdikten sonra de─čerleri nas─▒l de─či┼čtirdi─čini g├Âstermektedir DATETIME .

 mysql> show variables like '%time_zone%';
+------------------+---------------------+
| Variable_name    | Value               |
+------------------+---------------------+
| system_time_zone | India Standard Time |
| time_zone        | Asia/Calcutta       |
+------------------+---------------------+

mysql> create table datedemo(
    -> mydatetime datetime,
    -> mytimestamp timestamp
    -> );

mysql> insert into datedemo values ((now()),(now()));

mysql> select * from datedemo;
+---------------------+---------------------+
| mydatetime          | mytimestamp         |
+---------------------+---------------------+
| 2011-08-21 14:11:09 | 2011-08-21 14:11:09 |
+---------------------+---------------------+

mysql> set time_zone="america/new_york";

mysql> select * from datedemo;
+---------------------+---------------------+
| mydatetime          | mytimestamp         |
+---------------------+---------------------+
| 2011-08-21 14:11:09 | 2011-08-21 04:41:09 |
+---------------------+---------------------+
 

Cevab─▒m─▒ makaleye d├Ân├╝┼čt├╝rd├╝m, b├Âylece daha fazla insan bunu faydal─▒ bulabilir, MySQL: Datetime Versus Veri T├╝rleri .


312







Ana fark, TATESTAMP time_zone ayar─▒ndan etkilenirken DATETIME sabitidir .

Bu nedenle, yaln─▒zca zaman dilimlerinde k├╝melenmi┼č k├╝meleriniz varsa - veya gelecekte olabilirse - ├Ânemlidir.

Daha basit kelimelerle: AvustralyaÔÇÖda bir veritaban─▒m varsa ve AmerikaÔÇÖda bir veritaban─▒n─▒ senkronize etmek / doldurmak i├žin bu veritaban─▒ndan bir miktar ├ž─▒karsam, TIMESTAMP olay─▒n yeni saat diliminde ger├žek zaman─▒n─▒ yans─▒tacak ┼čekilde g├╝ncellenir, DATETIME ise olay─▒n saat dilimini hala saat diliminde yans─▒t─▒n .

TIMESTAMPÔÇÖin kullan─▒lmas─▒ gereken yerlerde kullan─▒lan DATETIMEÔÇÖ─▒n harika bir ├Ârne─či FacebookÔÇÖta, sunucular─▒n─▒n zaman dilimleri aras─▒nda hangi zaman olaylar─▒n─▒n ger├žekle┼čti─činden asla emin de─čiller. Bir zamanlar, mesaj g├Ânderilmeden ├Ânce mesajlara cevap verdi─čimi s├Âyledi─čim bir konu┼čma yap─▒yordum. (Bu, elbette, zamanlar senkronize edilmek yerine g├Ânderildiyse, mesajla┼čma yaz─▒l─▒m─▒ndaki k├Ât├╝ zaman dilimi ├ževirisinden de kaynaklanm─▒┼č olabilir.)


187







Bu karar─▒ anlamsal olarak veriyorum.

Zaman─▒nda (az ya da ├žok) bir sabit nokta kaydetmem gerekti─činde zaman damgas─▒ kullan─▒r─▒m. ├ľrne─čin, veritaban─▒na bir kay─▒t eklendi─činde veya baz─▒ kullan─▒c─▒ i┼člemleri ger├žekle┼čti─činde.

Tarih / saatin ayarlan─▒p iste─če ba─čl─▒ olarak de─či┼čtirilebildi─či tarih saat alan─▒n─▒ kullan─▒yorum. ├ľrne─čin, bir kullan─▒c─▒ daha sonra kaydedebildi─či zaman randevular─▒ de─či┼čtirir.


121


2009-01-03





Ne DATETIME, ne de TIMESTAMP alan─▒n─▒ kullanman─▒z─▒ ├Âneririm . Belirli bir g├╝n├╝ bir b├╝t├╝n olarak (bir do─čum g├╝n├╝ gibi) temsil etmek istiyorsan─▒z, o zaman bir DATE t├╝r├╝ kullan─▒n, ancak bundan daha spesifikseniz, muhtemelen bir birimin yerine ger├žek bir an─▒ kaydetmekle ilgileniyorsunuzdur. saat (g├╝n, hafta, ay, y─▒l). Bir DATETIME veya TIMESTAMP kullanmak yerine, bir BIGINT kullan─▒n ve basit├že (Java kullan─▒yorsan─▒z) epoch'tan beri (System.currentTimeMillis ()) milisaniye say─▒s─▒n─▒ saklay─▒n. Bunun birka├ž avantaj─▒ var:

  1. Sat─▒c─▒ kilitlenmesini ├Ânlersiniz. Hemen hemen her veritaban─▒, benzer ┼čekilde tam say─▒lar─▒ destekler. Ba┼čka bir veritaban─▒na ge├žmek istedi─činizi varsayal─▒m. MySQL'in DATETIME de─čerleri aras─▒ndaki farklar ve Oracle'─▒n bunlar─▒ nas─▒l tan─▒mlad─▒─č─▒ konusunda endi┼čelenmek ister misiniz? MySQL'in farkl─▒ s├╝r├╝mleri aras─▒nda bile, TIMESTAMPS farkl─▒ bir hassasiyet seviyesine sahiptir. Sadece son zamanlarda MySQL, zaman damgalar─▒nda milisaniyeyi destekledi.
  2. Saat dilimi sorunu yok. Burada, farkl─▒ veri t├╝rlerinde saat dilimleri ile olanlarla ilgili baz─▒ g├Âr├╝┼čler var. Fakat bu ortak bilgi mi ve meslekta┼člar─▒n─▒z bunu ├Â─črenmek i├žin zaman harcayacaklar m─▒? ├ľte yandan, bir BigINT'i bir java.util.Date olarak de─či┼čtirerek kar─▒┼čt─▒rmak olduk├ža zordur. Bir BIGINT kullanmak, saat dilimleri ile ilgili sorunlar─▒n bir araya gelmesine neden olur.
  3. Menzil veya hassasiyet hakk─▒nda endi┼čelenmeyin. Gelecekteki tarih aral─▒klar─▒na g├Âre neyin k─▒salt─▒ld─▒─č─▒ konusunda endi┼čelenmenize gerek yok (TIMESTAMP sadece 2038'e gidiyor).
  4. ├ť├ž├╝nc├╝ taraf ara├ž entegrasyonu. Bir tamsay─▒ kullanarak, 3. taraf ara├žlar─▒n (├Ârn. EclipseLink) veri taban─▒ ile etkile┼čime girmesi ├Ânemsizdir. Her ├╝├ž├╝nc├╝ taraf arac─▒ MySQL'in yapt─▒─č─▒ gibi ayn─▒ bir "tarih / saat" anlay─▒┼č─▒na sahip olmayacak. Bu ├Âzel veri t├╝rlerini kullan─▒yorsan─▒z, Haz─▒rda Bekletme modunda java.sql.TimeStamp veya java.util.Date nesnesi kullanman─▒z gerekip gerekmedi─čini denemek ister misiniz? Temel veri t├╝rlerinizi kullanmak, ├╝├ž├╝nc├╝ taraf ara├žlarla ├Ânemsiz kullanman─▒za yard─▒mc─▒ olur.

Bu sorun, bir veritaban─▒nda bir para de─čerini (yani 1,99 $) nas─▒l kaydetmeniz gerekti─či ile yak─▒ndan ilgilidir. Ondal─▒k m─▒ yoksa veritaban─▒n─▒n Money t├╝r├╝n├╝ m├╝ kullanmal─▒s─▒n─▒z yoksa Double'nin en k├Ât├╝s├╝ m├╝? Bu se├ženeklerin ├╝├ž├╝ de yukar─▒da s─▒ralanan sebeplerin ├žo─ču nedeniyle korkun├ž. ├ç├Âz├╝m, BIGINT kullanarak paran─▒n de─čerini sent cinsinden depolamak ve sonra kullan─▒c─▒ya de─čeri g├Âr├╝nt├╝ledi─činizde kuru┼člar─▒ dolar de─čerine d├Ân├╝┼čt├╝rmektir. Veritaban─▒n─▒n g├Ârevi veriyi saklamak ve bu verileri ele almamakt─▒r. Veritabanlar─▒nda (├Âzellikle Oracle'da) g├Ârd├╝─č├╝n├╝z t├╝m bu fantezi veri t├╝rleri ├žok az eklenir ve sizi sat─▒c─▒ kilitlemesine y├Ânlendirir.


98







TIMESTAMP, DATETIME i├žin 4 bayt Vs 8 baytt─▒r.

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

Ancak scronide'nin 1970 y─▒l─▒n─▒n daha d├╝┼č├╝k bir limiti oldu─čunu s├Âyledi─či gibi. Gelecekte ger├žekle┼čebilecek her ┼čey i├žin harikad─▒r;)


95


2009-01-04





  1. TIMESTAMP, DATETIME i├žin d├Ârt bayt ve sekiz baytt─▒r.

  2. Zaman damgalar─▒ da veritaban─▒nda daha hafiftir ve daha h─▒zl─▒ dizine al─▒n─▒r.

  3. DATETIME tipi, hem tarih hem de saat bilgisi i├žeren de─čerlere ihtiya├ž duydu─čunuzda kullan─▒l─▒r. MySQL, DATETIME de─čerlerini 'YYYY-AA-GG YG: AA: SS' format─▒nda al─▒r ve g├Âr├╝nt├╝ler. Desteklenen aral─▒k '1000-01-01 00:00:00 ÔÇ▓ -' 9999-12-31 23:59:59 ÔÇ▓ 'dir.

TIMESTAMP veri t├╝r├╝ '1970-01-01 00:00:01 ÔÇ▓ UTC ila' 2038-01-09 03:14:07 ÔÇ▓ UTC aral─▒─č─▒ndad─▒r. MySQL s├╝r├╝m├╝ne ve sunucunun ├žal─▒┼čt─▒─č─▒ SQL moduna ba─čl─▒ olarak de─či┼čen ├Âzelliklere sahiptir.

  1. TATESTAMP, time_zone ayar─▒ndan etkilenirken DATETIME sabittir.

94







Ger├žekten de uygulamaya ba─čl─▒.

SanghaiÔÇÖde bir randevu i├žin, bir kullan─▒c─▒ taraf─▒ndan New YorkÔÇÖtaki bir sunucuya zaman damgas─▒ koymay─▒ d├╝┼č├╝n├╝n. Kullan─▒c─▒ Sanghai'ye ba─čland─▒─č─▒nda, ayn─▒ randevu zaman damgas─▒na Tokyo'daki yans─▒t─▒lm─▒┼č bir sunucudan eri┼čiyor. Randevuyu Tokyo zaman─▒nda g├Ârecek, orijinal New York zaman─▒ndan mahsup edilecek.

Bu nedenle, randevu veya program gibi kullan─▒c─▒ zaman─▒n─▒ temsil eden de─čerler i├žin, tarih saat daha iyidir. Sunucu ayarlar─▒ndan ba─č─▒ms─▒z olarak kullan─▒c─▒n─▒n istedi─či tarihi ve saati kontrol etmesini sa─člar. Ayarlanan saat, sunucunun saat diliminden, kullan─▒c─▒n─▒n saat diliminden veya g├╝n ─▒┼č─▒─č─▒ndan yararlanma zaman─▒n─▒n hesaplanma ┼čeklindeki de─či┼čikliklerden etkilenmeyen ayar s├╝residir (evet, de─či┼čiyor).

├ľte yandan, ├Âdeme i┼člemleri, tablo de─či┼čiklikleri veya g├╝nl├╝─če kaydetme gibi sistem saatini temsil eden de─čerler i├žin her zaman zaman damgas─▒ kullan─▒n. Sistem, sunucuyu ba┼čka bir saat dilimine ta┼č─▒yarak veya farkl─▒ saat dilimlerinde sunucular aras─▒nda kar┼č─▒la┼čt─▒rma yaparken etkilenmeyecektir.

Zaman damgalar─▒ da veritaban─▒nda daha hafiftir ve daha h─▒zl─▒ dizine al─▒n─▒r.


46







2016 + : tavsiyem, Mysql saatinizi UTC'ye ayarlamak ve DATETIME kullanmak:

Herhangi bir yeni ├Ân u├ž ├žer├ževesi (A├ž─▒sal 1/2, tepki, Vue, ...) UTC tarih saatinizi yerel saate kolayca ve otomatik olarak d├Ân├╝┼čt├╝rebilir.

Bunlara ek olarak:

(Sunucular─▒n─▒z─▒n saat dilimini de─či┼čtirme ihtimaliniz yoksa)


AngularJs ile ├ľrnek

 // back-end: format for angular within the sql query
SELECT DATE_FORMAT(my_datetime, "%Y-%m-%dT%TZ")...

// font-end Output the localised time
{{item.my_datetime | date :'medium' }}
 

T├╝m yerelle┼čtirilmi┼č zaman format─▒ burada bulunabilir: https://docs.angularjs.org/api/ng/filter/date


41







Bir timestamp alan, alan─▒n ├Âzel bir halidir datetime . timestamp ├ľzel ├Âzelliklere sahip olacak s├╝tunlar olu┼čturabilirsiniz ; g├╝ncelleme ve / veya g├╝ncelleme s─▒ras─▒nda kendisini g├╝ncellemek i├žin ayarlanabilir.

"Daha b├╝y├╝k" veritaban─▒ terimlerinde, timestamp ├╝zerinde birka├ž ├Âzel durum tetikleyicisi var.

Do─čru olan, tamamen ne yapmak istedi─činize ba─čl─▒d─▒r.


36







TIMESTAMP her zaman UTCÔÇÖdedir (yani, 1970-01-01ÔÇÖden sonra UTCÔÇÖde ge├žen saniye) ve MySQL sunucunuz bunu ba─člant─▒ zaman dilimi i├žin otomatik olarak tarih / saate d├Ân├╝┼čt├╝r├╝r. Uzun vadede, TIMESTAMP gitmenin yoludur ├ž├╝nk├╝ zamansal verilerinizin her zaman UTC'de olaca─č─▒n─▒ biliyorsunuzdur. ├ľrne─čin, farkl─▒ bir sunucuya ge├ži┼č yaparsan─▒z veya sunucunuzdaki saat dilimi ayarlar─▒n─▒ de─či┼čtirirseniz tarihlerinizi mahvedemezsiniz.

Not: varsay─▒lan ba─člant─▒ zaman dilimi, sunucu saat dilimidir, ancak bu, oturum ba┼č─▒na de─či┼čebilir (gerekir) (bkz. SET time_zone = ... ).


34







DATETIME, TIMESTAMP ve DATE aras─▒ndaki kar┼č─▒la┼čt─▒rma


g├Âr├╝nt├╝ tan─▒m─▒n─▒ buraya girin

Bu nedir?

  • Bir DATETIME veya TIMESTAMP de─čeri, mikrosaniye (6 basamakl─▒) hassasiyete sahip bir k─▒s─▒m kesirli saniye saniye i├žerebilir. ├ľzellikle, bir DATETIME veya TIMESTAMP s├╝tununa eklenen bir de─čerdeki herhangi bir kesirli k─▒s─▒m at─▒lmak yerine depolan─▒r. Bu elbette iste─če ba─čl─▒d─▒r.

Kaynaklar:


27







MySQL'de tablo s├╝tunlar─▒n─▒z─▒ olu┼čtururken a┼ča─č─▒daki sat─▒rlar boyunca bir ┼čeyler kullanabilece─činizi belirtmek gerekir:

 on update CURRENT_TIMESTAMP
 

Bu, bir sat─▒r─▒ de─či┼čtirdi─činiz her durumda zaman─▒ g├╝nceller ve saklanan son d├╝zenleme bilgileri i├žin bazen ├žok yararl─▒d─▒r. Ancak bu, yaln─▒zca tarih damgas─▒yla ├žal─▒┼č─▒r, ancak tarih saatiyle de─čil.


24







MySQL ve PHP ile ├žal─▒┼č─▒rken daima bir Unix zaman damgas─▒ kullan─▒rd─▒m. Bunun temel nedeni PHP'de varsay─▒lan tarih y├Ântemi olmas─▒n─▒n parametresi olarak bir zaman damgas─▒ kullan─▒r, dolay─▒s─▒yla ayr─▒┼čt─▒rmaya gerek kalmaz.

Ge├žerli Unix zaman damgas─▒n─▒ PHP'de almak i├žin, sadece time();
ve MySQL'de yap─▒n SELECT UNIX_TIMESTAMP(); .


22







Deneyimlerime g├Âre, eklemenin yaln─▒zca bir kez ger├žekle┼čti─či bir tarih alan─▒ istiyorsan─▒z ve s├Âz konusu alanda herhangi bir g├╝ncelleme veya ba┼čka bir i┼člem yapmak istemiyorsan─▒z, tarih saatine bak─▒n .

├ľrne─čin, user bir KAYIT TAR─░H─░ alan─▒ olan bir tablo d├╝┼č├╝n├╝n . Bu user tabloda, belirli bir kullan─▒c─▒n─▒n en son giri┼č zaman─▒n─▒ bilmek istiyorsan─▒z , alan─▒n g├╝ncellenmesi i├žin zaman damgas─▒ t├╝r├╝ndeki bir alana gidin .

Tabloyu phpMyAdmin'den olu┼čturuyorsan─▒z , varsay─▒lan ayar, sat─▒r g├╝ncellemesi oldu─čunda zaman damgas─▒ alan─▒n─▒ g├╝nceller. Dosya damgan─▒z sat─▒r g├╝ncellemesiyle g├╝ncellenmiyorsa, zaman damgas─▒ alan─▒n─▒n otomatik olarak g├╝ncellenmesini sa─člamak i├žin a┼ča─č─▒daki sorguyu kullanabilirsiniz .

 ALTER TABLE your_table
      MODIFY COLUMN ts_activity TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;
 

17







Zaman damgas─▒ veri t├╝r├╝, tarih ve saati depolar, ancak UTC bi├žiminde, tarih saatinde oldu─ču gibi ge├žerli saat diliminde de─čil. Verileri al─▒rken zaman damgas─▒ da bunu ge├žerli saat dilimine d├Ân├╝┼čt├╝r├╝r.

├ľyleyse ABDÔÇÖde oldu─čunuzu ve ABDÔÇÖnin saat dilimine sahip bir sunucudan veri ald─▒─č─▒n─▒z─▒ varsayal─▒m. Ard─▒ndan ABD saat dilimine g├Âre tarih ve saati al─▒rs─▒n─▒z. Zaman damgas─▒ veri t├╝r├╝ s├╝tunu, sat─▒r─▒ g├╝ncellendi─činde daima otomatik olarak g├╝ncellenir. Bu nedenle, belirli bir sat─▒r─▒n en son ne zaman g├╝ncellendi─čini izlemek yararl─▒ olabilir.

Daha fazla bilgi i├žin, Timestamp Vs Datetime blog yaz─▒s─▒n─▒ okuyabilirsiniz .


15







Her zaman bir Unix zaman damgas─▒ kullan─▒r─▒m, sadece zaman dilimi i├žin ayarlamalar yaparken, tarih ekleme / ├ž─▒karma vb. Ayarlar─▒ yaparken ├žok fazla tarih bilgisi ile u─čra┼č─▒rken ak─▒l sa─čl─▒─č─▒n─▒ korumak i├žin. Zaman damgalar─▒n─▒ kar┼č─▒la┼čt─▒r─▒rken, bu zaman diliminin karma┼č─▒k etkenlerini d─▒┼člar ve daha a─č─▒r olan tarih-zaman toplama / ├ž─▒karma i┼čleminden ziyade hafif aritmetik kullan─▒m─▒n─▒z i├žin sunucu taraf─▒ i┼člemenizdeki kaynaklar─▒ (uygulama kodu veya veritaban─▒ sorgular─▒ olsun veya olmas─▒n) yedeklemenizi sa─člar. fonksiyonlar.

G├Âz ├Ân├╝nde bulundurmaya de─čer ba┼čka bir ┼čey:

Bir uygulama olu┼čturuyorsan─▒z, verilerinizin hat ├╝zerinde nas─▒l kullan─▒lmas─▒ gerekti─čini asla bilemezsiniz. Veri k├╝menizdeki bir grup kayd─▒ ├╝├ž├╝nc├╝ ┼čah─▒slara ait bir APIÔÇÖden bir grup ├Â─čeyle kar┼č─▒la┼čt─▒rmak zorunda kal─▒rsan─▒z ve bunlar─▒ kronolojik s─▒raya koymaktan mutluluk duyarsan─▒z, Sat─▒rlar─▒n─▒z i├žin Unix zaman damgalar─▒. MySQL zaman damgalar─▒n─▒ kullanmaya karar verseniz bile, Unix zaman damgas─▒n─▒ sigorta olarak saklay─▒n.


14







Bir tabloda bir UPDATE ifadesi yapt─▒─č─▒n─▒zda zaman damgas─▒n─▒ de─či┼čtirme konusunda dikkatli olun. 'Ad' (varchar), 'Ya┼č' (int) ve 'Tarih_ Eklendi' (zaman damgas─▒) s├╝tunlar─▒n─▒ i├žeren bir tablonuz varsa ve a┼ča─č─▒daki DML deyimini ├žal─▒┼čt─▒r─▒n

 UPDATE table
SET age = 30
 

o zaman 'Tarih_ Eklendi' s├╝tununuzdaki her bir de─čer ge├žerli zaman damgas─▒na de─či┼čtirilir.


13







Bu makaleden al─▒nan referans:

Ana farkl─▒l─▒klar:

TIMESTAMP, kay─▒tlardaki de─či┼čiklikleri izlemek ve kay─▒t her de─či┼čtirildi─či zaman g├╝ncellenmek i├žin kullan─▒l─▒r. DATETIME, kay─▒tlardaki hi├žbir de─či┼čiklikten etkilenmeyen belirli ve statik bir de─čeri saklamak i├žin kullan─▒l─▒r.

TIMESTAMP ayr─▒ca TIME ZONE ile ilgili farkl─▒ ayarlardan da etkilenir. DATETIME sabittir.

TIMESTAMP dahili olarak mevcut zaman dilimini depolamak i├žin UTC'ye ve al─▒m s─▒ras─▒nda tekrar ge├žerli saat dilimine d├Ân├╝┼čt├╝r├╝r. DATETIME bunu yapamaz.

TIMESTAMP destekli seri: '1970-01-01 00:00:01 ÔÇ▓ UTC ila' 2038-01-19 03:14:07 ÔÇ▓ UTC DATETIME destekli aral─▒k: '1000-01-01 00:00:00 ÔÇ▓ ila' 9999 -12-31 23:59:59 ÔÇ▓


13







Benim durumumda UTC'yi her ┼čey i├žin bir zaman dilimi olarak belirledim: sistem, veritaban─▒ sunucusu vb. M├╝┼čterim ba┼čka bir zaman dilimi gerektiriyorsa, uygulamay─▒ uygulamas─▒nda yap─▒land─▒r─▒r─▒m.

Neredeyse her zaman datetime alanlar─▒ yerine zaman damgalar─▒n─▒ tercih ederim, ├ž├╝nk├╝ zaman damgalar─▒ zaman dilimini ├Ârt├╝k olarak i├žerir. Bu nedenle, uygulamaya farkl─▒ zaman dilimlerinden kullan─▒c─▒lardan eri┼čilece─či ve yerel saat dilimlerinde tarihleri ÔÇőÔÇőve saatleri g├Ârmelerini istedi─činizden beri, bu alan t├╝r├╝, verilerin tarih / saat alanlar─▒na kaydedilmi┼č oldu─čundan daha kolay yap─▒lmas─▒n─▒ sa─člar .

Art─▒ olarak, veritaban─▒n─▒n ba┼čka bir saat dilimine sahip bir sisteme ta┼č─▒nmas─▒ durumunda, zaman damgalar─▒n─▒ kullan─▒rken kendimi daha g├╝vende hissederim. ─░ki an aras─▒ndaki farklar─▒ hesaplarken olas─▒ sorunlar─▒ s├Âylememeli, aralar─▒nda bir s├╝re de─či┼čmeli ve 1 saat veya daha az bir hassasiyete ihtiya├ž duyulmal─▒.

Dolay─▒s─▒yla, ├Âzetlemek gerekirse, zaman damgas─▒n─▒n bu avantajlar─▒na de─čer veriyorum:

  • uluslararas─▒ (├žok zaman dilimi) uygulamalarda kullan─▒ma haz─▒r
  • zaman dilimleri aras─▒nda kolay ge├ži┼čler
  • farkl─▒l─▒klar─▒ hesaplamak olduk├ža kolayd─▒r (her iki zaman damgas─▒n─▒ da ├ž─▒karman─▒z yeterlidir)
  • Yaz saati giri┼č / ├ž─▒k─▒┼č tarihleri ÔÇőÔÇőhakk─▒nda endi┼čelenmeyin

B├╝t├╝n bu sebeplerden dolay─▒, m├╝mk├╝n olan yerlerde UTC ve zaman damgas─▒ alanlar─▒n─▒ se├žiyorum. Ve ba┼č a─čr─▒lar─▒ndan ka├ž─▒n─▒r;)


13







Gereksiz tetikleyiciler kullan─▒lmadan TIMESTAMPÔÇÖ─▒n ┼čimdiki zamana g├Âre kendini otomatik g├╝ncelleme kabiliyetinde e┼čsiz bir fayda buldum. Bu sadece benim olsa da, TIMESTAMP s├Âylendi─či gibi UTC olsa da.

Farkl─▒ zaman dilimleri boyunca izini s├╝rd├╝rebilir, bu nedenle ├Ârne─čin g├Âreceli bir zaman g├Âstermeniz gerekiyorsa, UTC zaman─▒ istedi─činiz gibi olur.


10







 +---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
|                                       TIMESTAMP                                       |                                 DATETIME                                 |
+---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
| TIMESTAMP requires 4 bytes.                                                           | DATETIME requires 8 bytes.                                               |
| Timestamp is the number of seconds that have elapsed since January 1, 1970 00:00 UTC. | DATETIME is a text displays 'YYYY-MM-DD HH:MM:SS' format.                |
| TIMESTAMP supported range: ÔÇś1970-01-01 00:00:01ÔÇ▓ UTC to ÔÇś2038-01-19 03:14:07ÔÇ▓ UTC.    | DATETIME supported range: ÔÇś1000-01-01 00:00:00ÔÇ▓ to ÔÇś9999-12-31 23:59:59ÔÇ▓ |
| TIMESTAMP during retrieval converted back to the current time zone.                   | DATETIME can not do this.                                                |
| TIMESTAMP is used mostly for metadata i.e. row created/modified and audit purpose.    | DATETIME is used mostly for user-data.                                   |
+---------------------------------------------------------------------------------------+--------------------------------------------------------------------------+
 

10







En b├╝y├╝k fark

  • Timestamp'taki bir INDEX'iniz - ├žal─▒┼č─▒r
  • Bir INDEX DateTime ├╝zerinde bulunuyor - mu de─čil i┼č

Datetime indekslemeyle ilgili sorunlar─▒ g├Ârmek i├žin bu yaz─▒ya bak─▒n


9







Timestamp ve Datetime aras─▒ndaki di─čer bir fark, Timestamp'tad─▒r, NULL de─čerine varsay─▒lan olarak ayarlayamazs─▒n─▒z.


9







datetime Zaman dilimleri ile ilgili bir├žok sorun ve hatayla kar┼č─▒la┼čt─▒ktan sonra uygulamalar─▒mda kullanmay─▒ b─▒rakt─▒m . IMHO timestamp kullan─▒m─▒ datetime ├žo─ču durumda oldu─čundan daha iyidir .

Ne zaman soruyorsun, saat ka├ž? ve cevap '2019-02-05 21:18:30' gibi bir ┼čey olarak geliyor, tamamlanmad─▒, tan─▒mlanmad─▒ cevap ├ž├╝nk├╝ ba┼čka bir b├Âl├╝mden yoksun, hangi zaman diliminde? Washington m─▒? Moskova m─▒? Pekin mi?

Saat dilimi olmadan tarih dilimlerinin kullan─▒lmas─▒, uygulaman─▒z─▒n yaln─▒zca 1 saat dilimi ile ilgilendi─či anlam─▒na gelir; ancak zaman damgalar─▒ size datetime , ayn─▒ saat dilimlerini farkl─▒ saat dilimlerinde g├Âstermenin esnekli─či ve avantajlar─▒n─▒ sa─člar .

─░┼čte size pi┼čmanl─▒k duyaca─č─▒n─▒z datetime ve verilerinizi zaman damgalar─▒nda saklaman─▒z─▒ dileyen baz─▒ durumlar .

  1. M├╝┼čterilerinizin rahat─▒ i├žin, matemati─či yapmalar─▒n─▒ ve zamanlar─▒n─▒ anlaml─▒ zaman dilimlerine d├Ân├╝┼čt├╝rmeden tercih ettikleri zaman dilimlerine g├Âre zamanlar─▒ g├Âstermek istersiniz. ─░htiyac─▒n─▒z olan tek ┼čey saat dilimini de─či┼čtirmek ve t├╝m uygulama kodunuz ayn─▒ olacakt─▒r. (Asl─▒nda her zaman uygulaman─▒n ba┼č─▒nda saat dilimini tan─▒mlaman─▒z veya PHP uygulamalar─▒ i├žin i┼člem yap─▒lmas─▒n─▒ istemeniz gerekir)

     SET time_zone = '+2:00';
     
  2. ─░├žinde bulundu─čunuz ├╝lkeyi de─či┼čtirdiniz ve verileri farkl─▒ bir saat diliminde (ger├žek verileri de─či┼čtirmeden) g├Âr├╝rken verileri koruma ├žal─▒┼čmalar─▒na devam ettiniz.

  3. d├╝nyadaki farkl─▒ m├╝┼čterilerden veri kabul ediyorsunuz, her biri saat dilimine zaman ay─▒r─▒yor.

K─▒sacas─▒

datetime = uygulama 1 saat dilimini destekler (ekleme ve se├žme i├žin)

timestamp = uygulama herhangi bir saat dilimini destekler (ekleme ve se├žme i├žin)


Bu cevap sadece zaman dilimi s├Âz konusu oldu─čunda esneklik ve zaman damgalar─▒n─▒n kolayl─▒─č─▒ ├╝zerine bir miktar vurgu yapmak i├žindir, s├╝tun boyutu, aral─▒─č─▒ veya kesri gibi di─čer farkl─▒l─▒klar─▒ kapsamaz .


8







Her ┼čeyi bir tek ham formatta tutmak ve verileri PHP kodunda veya SQL sorgunuzda formatlamak i├žin zaman damgas─▒n─▒ kullanmay─▒ tercih ederim. Her ┼čeyi d├╝z saniye tutman─▒n kodunuzda kullan─▒┼čl─▒ oldu─ču durumlar vard─▒r.


7


2009-01-04





A TIMESTAMP 4 bayt gerektirir, oysa DATETIME 8 bayt gerektirir.


7







Unix zaman damgas─▒n─▒ seviyorum, ├ž├╝nk├╝ say─▒lara d├Ân├╝┼čt├╝rebilir ve say─▒ hakk─▒nda endi┼čelenebilirsiniz. Ayr─▒ca s├╝releri vb. Ekler / ├ž─▒kar─▒r ve s├╝releri al─▒rs─▒n─▒z. Sonra sonucu ne olursa olsun Tarih'e d├Ân├╝┼čt├╝r├╝n. Bu kod, bir belgedeki zaman damgas─▒ ile ge├žerli saat aras─▒nda dakika cinsinden ne kadar zaman ge├žti─čini bulur.

 $date  = $item['pubdate']; (etc ...)
$unix_now = time();
$result = strtotime($date, $unix_now);
$unix_diff_min = (($unix_now  - $result) / 60);
$min = round($unix_diff_min);
 

6



─░lgili yay─▒nlar


Datetime Python mod├╝l├╝n├╝ kullanarak bu tarihten itibaren alt─▒ ay tarihini nas─▒l hesaplar─▒m?

MySQL'de oldu─ču gibi Microsoft SQL Server'da bir Boolean veri t├╝r├╝ var m─▒?

MySQL sorgusunda bug├╝ne kadar zaman damgas─▒n─▒ d├Ân├╝┼čt├╝r

MySQL'de Datetime bug├╝n veya daha b├╝y├╝k

C++ 'ta std :: function ya da function pointer kullanmal─▒ m─▒y─▒m?

MYSQL 5.7'deki yerel JSON deste─či: MYSQL'deki JSON veri tipinin avantajlar─▒ ve dezavantajlar─▒ nelerdir?

Statik olarak bilinmeyen t├╝rleri belirtmek i├žin XmlInclude veya SoapInclude ├Âzelli─čini kullan─▒n.

Datetime veya zaman damgas─▒ ne zaman kullan─▒lmal─▒ [duplicate]

.NET uygulamas─▒nda sql server zaman veri t├╝r├╝ nas─▒l kullan─▒l─▒r?

Oracle zaman damgas─▒ veri t├╝r├╝

Etiketle ilgili di─čer sorular [mysql]


SQLite'─▒n saniyede INSERT performans─▒n─▒ artt─▒rmak?

Tan─▒ms─▒z bir nesne ├Âzelli─čini alg─▒lama

selekt├Âr├╝ bilinmiyor ├ž├╝nk├╝ performSelector bir s─▒z─▒nt─▒ya neden olabilir

PHP'de nas─▒l y├Ânlendirme yapabilirim?

Yazd─▒rma i┼člevinin ├ž─▒kt─▒s─▒ nas─▒l temizlenir?

Bir ├žer├ževe ile k├╝t├╝phane aras─▒ndaki fark nedir? [kapal─▒]

Bir base64 dizesini nas─▒l kodlar─▒m ve kodunu ├ž├Âzerim?

** kwargs'in amac─▒ ve kullan─▒m─▒ nedir?

Bir nesneyi bir etkinlikten di─čerine Android'de ge├žirme

'B' karakteri bir string de─či┼čmezinin ├Ân├╝nde ne yapar?