Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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中删除早于2020/11个月的字符串日期?_Mysql - Fatal编程技术网

如何在MySQL中删除早于2020/11个月的字符串日期?

如何在MySQL中删除早于2020/11个月的字符串日期?,mysql,Mysql,我有一个数据库,大约有500k行,我不知道为什么,但是在它使用“varchar”的列上不使用“Date”类型。现在日期的格式是-01/02/2021 07:08:49 AM 我的问题是,SQL查询应该如何从表中删除此类“旧”日期行?或者,在另一方面,我应该如何转换列而不丢失数据并将相同的格式保存到日期类型列 我试着用如下方式删除: DELETE FROM `visited` WHERE LEFT(`last_visit_date`, 2) != '01' OR LEFT(`last_visit_

我有一个数据库,大约有500k行,我不知道为什么,但是在它使用“varchar”的列上不使用“Date”类型。现在日期的格式是-
01/02/2021 07:08:49 AM

我的问题是,SQL查询应该如何从表中删除此类“旧”日期行?或者,在另一方面,我应该如何转换列而不丢失数据并将相同的格式保存到日期类型列

我试着用如下方式删除:

DELETE FROM `visited` WHERE LEFT(`last_visit_date`, 2) != '01' OR LEFT(`last_visit_date`, 2) != '12';
然而,这并没有完全清洁桌子


任何帮助都将不胜感激。

您可以在删除查询中使用
STR_TO_DATE
将文本日期转换为真实日期:

删除
来自访问
哪里
截止日期(上次就诊日期,%d/%m/%Y%h:%i:%s%p')<'2020-11-01';
请注意,如果您的文本日期实际上比日期早一个月,则使用此调用
STR\u to\u DATE

STR-TO-DATE(上次就诊日期,%m/%d/%Y%h:%i:%s%p')

您可以在删除查询中使用
STR\u TO\u DATE
将文本日期转换为真实日期:

删除
来自访问
哪里
截止日期(上次就诊日期,%d/%m/%Y%h:%i:%s%p')<'2020-11-01';
请注意,如果您的文本日期实际上比日期早一个月,则使用此调用
STR\u to\u DATE

STR-TO-DATE(上次就诊日期,%m/%d/%Y%h:%i:%s%p')

如果您不想丢失格式错误的日期,可以更新表格:

UPDATE visited
SET last_visit_date = STR_TO_DATE(last_visit_date, '%d/%c/%Y %r')
WHERE last_visit_date LIKE '__/__/____ __:__:__ __';
并将列的数据类型更改为
DATETIME
(如果
last\u visit\u date
的所有其他值都是有效的DATETIME):


请参阅简化的表格。

如果您不想丢失格式错误的日期,可以更新表格:

UPDATE visited
SET last_visit_date = STR_TO_DATE(last_visit_date, '%d/%c/%Y %r')
WHERE last_visit_date LIKE '__/__/____ __:__:__ __';
并将列的数据类型更改为
DATETIME
(如果
last\u visit\u date
的所有其他值都是有效的DATETIME):


参见简化的。

是dd/mm/yyyy还是mm/dd/yyyy?是dd/mm/yyyy还是mm/dd/yyyy?这是m/d/y,左边的
(上次就诊日期,2)!='01'和左侧(上次访问日期,2)!='12'
给了我提示我认为完整的格式应该是
'%m/%d/%Y%r'
@Cid是的…我总是忘记
%r
,但是我拥有的应该是等效的。这是m/d/Y,左边的
(上次访问日期,2)!='01'和左侧(上次访问日期,2)!='12'
给了我一个提示,我认为完整的格式应该是
'%m/%d/%Y%r'
@Cid是的……我总是忘记
%r
,不过我拥有的应该是等价的。