我应该在MySQL中使用日期时间或时间戳数据类型吗?

我应该在MySQL中使用日期时间或时间戳数据类型吗?

您推荐使用日期时间或者是时间戳字段,以及为什么(使用MySQL)?

我正在服务器端使用PHP。


慕勒3428872
浏览 2508回答 3
3回答

炎炎设计

MySQL中的时间戳通常用于跟踪对记录的更改,并且经常在每次更改记录时更新。如果要存储特定值,则应使用日期时间字段。如果您想决定使用UNIX时间戳还是原生MySQL日期时间字段,请使用本机格式。您可以通过这种方式在mysql中进行计算。("SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)")将值的格式更改为UNIX时间戳很简单("SELECT UNIX_TIMESTAMP(my_datetime)")当您查询记录时,如果您想使用PHP操作它。

繁华开满天机

在MySQL 5和更高版本中,时间戳值从当前时区转换为UTC存储,并从UTC转换回当前时区进行检索。(这只发生在时间戳数据类型上,并且不对于其他类型,如datetime。)默认情况下,每个连接的当前时区是服务器的时间。时区可以按每个连接设置,如MySQL服务器时区支持.

蓝山帝景

下面的示例显示了TIMESTAMP更改后,日期类型更改了值。time-zone to 'america/new_york'哪里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 |+---------------------+---------------------+
打开App,查看更多内容
随时随地看视频慕课网APP