簡體   English   中英

PHP和MySQL的日期和時間

[英]Php and mysql date and time

我是php的新手,我看到一些程序員通過php date()或mysql NOW()在數據庫中存儲了datetime或將列作為時間戳。 我想知道這三種格式之間的區別,以及如何將這三種格式轉換為世界各地的本地用戶。

  1. 根據mysql的法律,您只能有一個timestamp字段,而對datetime字段的數量沒有限制。
  2. 您可以為onupdate current timestampcurrent timestamp設置時間戳字段。這些字段類型不影響date insert method
  3. 如果使用date()函數,則可以設置自己的日期格式。但是不能使用now()

對於日期格式,語法請檢查本文https://www.w3schools.com/php/func_date_date.asp

Finaly Datetime and timestamp是mysql date()和NOW() is php

有幾件事要考慮:

  • TIMESTAMP列的日期限制為1931年到2038年之間,因為它們是32位時間戳記值
  • DATETIME列最多可以設置為9999年。雖然它們不會像默認的TIMESTAMP值那樣自動填充,但它們的限制較少,但每個表可以有盡可能多的列。

插入時間時,PHP時鍾和數據庫時鍾可能會略有不同。 使用NTP可以縮小差距,但是確實會發生漂移。 PHP的date()函數需要格式化為ISO-8601格式才能插入( YYYY-MM-DD HH:MM:SS )。 MySQL NOW()函數與UTC_TIMESTAMP()相同。

出於以下原因,我強烈建議您在數據庫中使用UTC時間:

  • 如果您以當地時間存儲,則還需要存儲時區,並且時區可能會以狂野和怪異的方式更改。
  • 您將來可能需要容納其他時區,這意味着您的數據中可能有多個本地時間,其中每個記錄的含義可能與其他時間不同。
  • 您的服務器可能會在時區之間移動,這可能會移動所有數據。

因此,使用UTC進行存儲,並根據用戶的時區首選項或應用程序的某些合理默認值呈現為本地時間。 請記住,時間格式通常很麻煩,每個國家/地區都有不同的日期格式標准,甚至單個國家/地區都可能對長格式,短格式或數字格式有多種偏好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM