现在这是我的表(使用mysql):
SQL Table: koko_table
name varchar(140)
status varchar(140)
time TIMESTAMP
我的问题基本上是,我有一个表单(使用php),用户只使用它来存储状态列中的数据,我的时间列将时间捕获为用户存储在状态列中的永久数据。我想我没有在时间列中使用准确的DATATYPE,因为每次访问我的数据库时,时间列都有不同的值。
用于将用户输入状态的时间存储为不可更改数据的正确数据类型是什么。
答案 0 :(得分:3)
最佳数据类型是DATETIME。
答案 1 :(得分:1)
您可以使用MySQL中的TIMESTAMP
或DATETIME
来存储日期和时间。
虽然存在差异:
TIMESTAMP
使用4个字节,DATETIME
8个字节。
时间戳可以介于1970
和2038
之间,而日期时间可以介于1000-01-01 00:00:00
和9999-12-32 23:59:59
之间。
TIMESTAMP
值从当前时区转换为UTC进行存储,并从UTC转换回(服务器)当前时区以进行检索。对于没有隐含时区的DATETIME
值,不会发生这种情况。
Datetime
字段必须在INSERT
次操作中声明,而timestamp
字段具有特殊功能,即表格的第一个时间戳(默认情况下)会自动插入或更新在每个INSERT
或UPDATE
操作中使用当前时间戳。 (这可能就是您在场景中看到的内容。)您可以更改此行为,因此只有“插入”或“仅更新”会将时间戳设置为当前时间戳。见 MySQL docs: Timestamp properties
例如,如果时间戳自动存储在“插入”中但在“更新”期间未更改,则可以设置:
ALTER TABLE TableName
CHANGE TimeStampName TimeStampName TIMESTAMP DEFAULT CURRENT_TIMESTAMP ;
答案 2 :(得分:0)
我首选DATETIME(长号码)或将其存储为格式化的字符串,如2011/10/18 13:50。第一个是性能更好,而第二个更容易在phpMyAdmin或类似的东西上编辑。