Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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 创建时间戳具有相同日期的新表_Mysql_Sql - Fatal编程技术网

Mysql 创建时间戳具有相同日期的新表

Mysql 创建时间戳具有相同日期的新表,mysql,sql,Mysql,Sql,我有一个数据库,包括time列,它以字符串格式将时间保存为时间戳,如'2020-10-19T04:49:15.651867Z',最后是Z。 我想选择同一天的时间戳,并将它们放入一个新表中。我尝试了以下方法: CREATE TABLE new_table AS (SELECT * FROM old_table WHERE DAY(time) = 20) 我得到了错误1292(22007):截断了错误的日期时间值:“2020-10-19T04:49:15.651867Z” 我认为问题出在DAY(t

我有一个数据库,包括
time
列,它以字符串格式将时间保存为时间戳,如
'2020-10-19T04:49:15.651867Z'
,最后是
Z
。 我想选择同一天的时间戳,并将它们放入一个新表中。我尝试了以下方法:

CREATE TABLE new_table AS (SELECT * FROM old_table WHERE DAY(time) = 20)
我得到了错误1292(22007):截断了错误的日期时间值:“2020-10-19T04:49:15.651867Z”

我认为问题出在
DAY(time)=20
上,但以下代码运行良好,并显示了同一天的所有条目:

 SELECT * FROM old_table WHERE DAY(time) = '20';
你能帮我吗?

试试:

CREATE TABLE new_table AS     
(SELECT * FROM old_table WHERE DAY(STR_TO_DATE(time, '%Y-%m-%dT%T.%fZ')) = 20)
e、 g.以你为例

SELECT DAY(STR_TO_DATE('2020-10-19T04:49:15.651867Z', '%Y-%m-%dT%T.%fZ')) ==> 19

首先,不应将日期/时间值存储为字符串。因此,我建议您修复数据模型

但是,如果碰巧有该格式的数据,可以使用字符串函数:

where time like '%-20T%'
或者,如果您确实希望数据来自同一日期,而不是当月的某一天,则:

where time like '2020-10-20%'

我强调,这只是因为
时间
存储为字符串,而不是正确的日期/时间。如果列是使用正确的类型存储的,那么您将使用日期/时间函数。

'2020-10-19T04:49:15.651867Z'
不是有效的MySQL日期时间文本。使用STR_TO_DATE()函数并提取正确的日期时间值。另外,将日期时间值存储为字符串不是一种好的做法。@Akina:我使用
day(str_to_date(time))=21
,但仍然不起作用?@草莓:我不明白?功能需要指定正确的模式。我给你用户手册的链接。请阅读、学习和申请。做一次。。。否则你总是会要求帮助…我会接受这个建议,让时间以时间的形式。我是sql新手,这就是为什么我要问以下问题。你能帮我把我的桌子换成有时间的桌子吗。目前我有
time-VARCHAR(60)
我应该使用
time-TIMESTAMP
捕获我所有的as
2020-10-19T04:49:15.651867Z