我需要在MySQL数据库中存储日期(随时间)。我希望能够格式化这些我喜欢的方式。那么在MySQL数据库中存储日期的最佳方法是什么? DATETIME类型,TIMESTAMP类型或简单的数字数据类型中的unix时间戳?我将使用PHP检索日期。
答案 0 :(得分:2)
通常使用TIMESTAMP
或DATETIME
数据类型无关紧要。
TIMESTAMP
为4个字节,DATETIME
为8。DATETIME
视为时钟图片;在全世界范围内将TIMESTAMP
视为及时。也就是说,如果您连接到同一个数据库,但来自不同的时区,DATETIME
看起来会相同,但TIMESTAMP
会根据时区进行调整。NOW()
,SELECTing
与PHP等兼容。TIMESTAMP
存储为32位整数(但您没有看到),因此仅限于~1970-2038。DATETIME
是时钟时间,如果您切换到夏令时,将会有一年两次缺少/额外的小时。是的,您可以使用UNIX_TIMESTAMP()
并拥有INT UNSIGNED
,但是看到'2015 -...'不是更好吗? (那将是4个字节。)
答案 1 :(得分:0)
您可以使用DateTime类型来存储时间戳&在mysql中使用now()插入当前时间戳,或者通过您认为合适的任何方法获取日期/时间戳。
答案 2 :(得分:0)
我更喜欢将它存储为始终来自时代并表示UTC的长度。这有助于我们必须迎合不同的本地化和时区方面 - 另外,我们最终会在DB服务器默认或JVM默认语言环境中存储值。