0

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

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

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

cdate timestamp(8)

提前致谢。

4

3 回答 3

3

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

如果需要格式化输出 (YYYYMMDD),请使用DATE_FORMAT函数。

于 2012-12-26T07:29:49.457 回答
3

(8)字段定义中的部分对以下内容没有任何影响:

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

(8)部分指定显示大小。当执行 a 时SELECT,MySQL 将返回XYZ时间戳中日期的第一部分,如此处所述

因此,只需从您的创建表查询中消除显示部分。这将创建一个timestamp列。您可以使用 MySQL 函数或 PHP 格式化时间戳(例如,去掉时间部分等)。

或者使用DATE根本不存储时间部分的数据类型。

于 2012-12-26T07:45:34.387 回答
2

的语法

timestamp(N)

自 mysql 5 起已弃用

您可以选择您选择的日期

SELECT date(ts)+0 from t;

DATETIME 数据类型占用 8 个字节的存储时间戳占用 4 个字节,日期时间占用更广泛的日期

于 2012-12-26T06:08:48.110 回答