哪个是在SQL中存储时间的正确数据类型?

时间:2011-10-19 11:46:03

标签: mysql time

现在这是我的表(使用mysql):

SQL Table: koko_table
  name varchar(140)
  status varchar(140)
  time TIMESTAMP

我的问题基本上是,我有一个表单(使用php),用户只使用它来存储状态列中的数据,我的时间列将时间捕获为用户存储在状态列中的永久数据。我想我没有在时间列中使用准确的DATATYPE,因为每次访问我的数据库时,时间列都有不同的值。

用于将用户输入状态的时间存储为不可更改数据的正确数据类型是什么。

3 个答案:

答案 0 :(得分:3)

最佳数据类型是DATETIME。

答案 1 :(得分:1)

您可以使用MySQL中的TIMESTAMPDATETIME来存储日期和时间。

虽然存在差异:

  • TIMESTAMP使用4个字节,DATETIME 8个字节。

  • 时间戳可以介于19702038之间,而日期时间可以介于1000-01-01 00:00:009999-12-32 23:59:59之间。

  • TIMESTAMP值从当前时区转换为UTC进行存储,并从UTC转换回(服务器)当前时区以进行检索。对于没有隐含时区的DATETIME值,不会发生这种情况。

  • Datetime字段必须在INSERT次操作中声明,而timestamp字段具有特殊功能,即表格的第一个时间戳(默认情况下)会自动插入或更新在每个INSERTUPDATE操作中使用当前时间戳。 (这可能就是您在场景中看到的内容。)您可以更改此行为,因此只有“插入”或“仅更新”会将时间戳设置为当前时间戳。见 MySQL docs: Timestamp properties

例如,如果时间戳自动存储在“插入”中但在“更新”期间未更改,则可以设置:

ALTER TABLE TableName
  CHANGE TimeStampName TimeStampName TIMESTAMP DEFAULT CURRENT_TIMESTAMP ;

答案 2 :(得分:0)

我首选DATETIME(长号码)或将其存储为格式化的字符串,如2011/10/18 13:50。第一个是性能更好,而第二个更容易在phpMyAdmin或类似的东西上编辑。