您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
您建议使用datetime或timestamp字段吗?为什么(使用MySQL)?
我在服务器端使用PHP。
当前回答
我总是将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的下限,例如存储出生日期。
其他回答
我总是将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的下限,例如存储出生日期。
MySQL中的时间戳通常用于跟踪记录的更改,并且经常在每次更改记录时更新。如果要存储特定值,应使用datetime字段。
如果您希望在使用UNIX时间戳或本机MySQL日期时间字段之间做出选择,请使用本机datetime格式。您可以通过这种方式在MySQL中进行计算(“SELECT DATE_ADD(my_datetime,INTERVAL 1 DAY)”),如果您想用PHP对记录进行操作,那么在查询记录时,很容易将值的格式更改为UNIX时间戳(“SELECT UNIX_timestamp(my_datatime)”)。
TIMESTAMP是四个字节,而DATETIME是八个字节。时间戳在数据库上也更轻,索引速度更快。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模式。DATETIME是常量,而TIMESTAMP受时区设置的影响。
TIMESTAMP始终采用UTC格式(即自1970-01-01以来的秒数,采用UTC格式),MySQL服务器会自动将其转换为连接时区的日期/时间。从长远来看,TIMESTAMP是一条可行的道路,因为您知道您的时间数据将始终采用UTC格式。例如,如果您迁移到其他服务器或更改服务器上的时区设置,您就不会把日期搞砸。
注意:默认连接时区是服务器时区,但这可以(应该)在每个会话中更改(请参见SET time_zone=…)。
到目前为止,还没有提到DEFAULT CURRENT_TIMESTAMP只适用于时间戳,而不适用于DateTime类型字段。
这与只能使用DateTime而不能使用Timestamp的MS Access表相关。