Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL-时间戳(8)替代方案?_Mysql_Sql_Timestamp_Sqldatatypes - Fatal编程技术网

MySQL-时间戳(8)替代方案?

MySQL-时间戳(8)替代方案?,mysql,sql,timestamp,sqldatatypes,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) 提前感谢。的语法 timestamp(N) 从mysql 5开始,已弃用 您可以选择您选择的日期 SELE

几年前,我尝试使用早期版本的MySQL运行这个表来创建这个表,结果很好。在较新版本的MySQL中,时间戳(8)似乎存在问题

CREATE TABLE top_hits (
  sid int(11),
  ip varchar(20),
  cdate timestamp(8)
)
我可以使用什么作为第4行时间戳(8)的替代方案?YYYYMMDD

cdate timestamp(8)
提前感谢。

的语法

timestamp(N)
从mysql 5开始,已弃用

您可以选择您选择的日期

SELECT date(ts)+0 from t;
DATETIME数据类型占用存储的8字节时间戳占用4字节,日期时间占用更大范围的日期

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

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

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

  • 列的大小(以字节为单位)
  • 存储在其中的值的范围(1970年至2038年)
  • 是否可以在其中存储小时、分钟和秒
(8)
部分指定显示大小。当执行
选择时,MySQL将返回时间戳中日期的第一部分
XYZ

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

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