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
捕获我所有的as2020-10-19T04:49:15.651867Z