几年前我尝试使用早期版本的MySQL运行它来创建这个表,它运行良好。在最近的MySQL版本中,似乎现在存在时间戳(8)的问题。
CREATE TABLE top_hits (
sid int(11),
ip varchar(20),
cdate timestamp(8)
)
我可以用什么来替代第4行的时间戳(8)? YYYYMMDD
cdate timestamp(8)
提前致谢。
答案 0 :(得分:3)
您需要DATE类型,它存储年,月和日。
如果您需要格式化输出(YYYYMMDD),请使用DATE_FORMAT功能。
答案 1 :(得分:3)
字段定义中的(8)
部分不对以下内容产生影响:
(8)
部分指定显示尺寸。执行SELECT
时,MySQL将从时间戳as described here返回日期的第一个XYZ
部分。
因此,只需从create table查询中删除显示部分即可。这将创建一个timestamp
列。您可以使用MySQL函数或PHP格式化时间戳(例如,删除时间部分等)。
或者使用根本不存储时间部分的DATE
数据类型。
答案 2 :(得分:2)
的语法
timestamp(N)
自mysql 5起已弃用
您可以选择您的选择日期
SELECT date(ts)+0 from t;
DATETIME数据类型需要8个字节的storege时间戳需要4个字节,而日期时间需要更宽的日期范围