MySQL - 时间戳(8)替代?

时间:2012-12-26 05:57:14

标签: mysql sql timestamp sqldatatypes

几年前我尝试使用早期版本的MySQL运行它来创建这个表,它运行良好。在最近的MySQL版本中,似乎现在存在时间戳(8)的问题。

CREATE TABLE top_hits (
  sid int(11),
  ip varchar(20),
  cdate timestamp(8)
)

我可以用什么来替代第4行的时间戳(8)? YYYYMMDD

cdate timestamp(8)

提前致谢。

3 个答案:

答案 0 :(得分:3)

您需要DATE类型,它存储年,月和日。

如果您需要格式化输出(YYYYMMDD),请使用DATE_FORMAT功能。

答案 1 :(得分:3)

字段定义中的(8)部分对以下内容产生影响:

  • 列的大小(以字节为单位)
  • 存储在其中的值范围(1970年至中途2038年)
  • 是否可以存储小时,分钟和秒钟

(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个字节,而日期时间需要更宽的日期范围