您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
当前回答
主要区别在于
时间戳上的索引-有效日期时间上的索引-不起作用
看看这篇文章,看看Datetime索引的问题
其他回答
如果您想保证您的应用程序在2038年2月无法运行,请使用TIMESTAMP。有关支持的日期范围,请参阅REFMAN。
这里的许多答案都建议将时间戳存储为时间戳,以防必须表示定义良好的时间点。但是,如果您按照惯例将所有时间点都存储在UTC中,那么您也可以使用datetime获取时间点。
我总是将DATETIME字段用于除行元数据(创建或修改日期)之外的任何内容。
如MySQL文档中所述:
DATETIME类型在您需要同时包含日期和时间信息的值时使用。MySQL以“YYYY-MM-DD HH:MM:SS”格式检索并显示DATETIME值。支持的范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。...TIMESTAMP数据类型的范围为“1970-01-01 00:00:01”UTC到“2038-01-09 03:14:07”UTC。它具有不同的财产,具体取决于MySQL版本和服务器运行的SQL模式。
一般情况下,您很可能会达到TIMESTAMP的下限,例如存储出生日期。
我更喜欢使用时间戳,以便将所有内容保持在一个通用的原始格式中,并将数据格式化为PHP代码或SQL查询。在某些情况下,它可以在代码中方便地将所有内容保持在简单的秒数内。
MySQL中的时间戳通常用于跟踪记录的更改,并且经常在每次更改记录时更新。如果要存储特定值,应使用datetime字段。
如果您希望在使用UNIX时间戳或本机MySQL日期时间字段之间做出选择,请使用本机datetime格式。您可以通过这种方式在MySQL中进行计算(“SELECT DATE_ADD(my_datetime,INTERVAL 1 DAY)”),如果您想用PHP对记录进行操作,那么在查询记录时,很容易将值的格式更改为UNIX时间戳(“SELECT UNIX_timestamp(my_datatime)”)。