Mysql SQL获取日期晚于指定日期
我正在开发一个数据库,它以人类可读的格式存储日期列。这似乎使得计算出给定日期晚于指定日期的行变得很困难 格式存储方式为2018年11月20日 我正在尝试返回收集日期晚于2018年11月5日的所有行 我尝试了以下抛出错误的查询Mysql SQL获取日期晚于指定日期,mysql,sql,datetime,Mysql,Sql,Datetime,我正在开发一个数据库,它以人类可读的格式存储日期列。这似乎使得计算出给定日期晚于指定日期的行变得很困难 格式存储方式为2018年11月20日 我正在尝试返回收集日期晚于2018年11月5日的所有行 我尝试了以下抛出错误的查询 SELECT * FROM `orders` WHERE collection_date >= CONVERT(datetime, '20181105') 这将抛出以下错误消息: 以下是我的数据库信息: 更新1: 我正在尝试以下查询。到目前为止,前面的查询均
SELECT *
FROM `orders`
WHERE collection_date >= CONVERT(datetime, '20181105')
这将抛出以下错误消息:
以下是我的数据库信息:
更新1:
我正在尝试以下查询。到目前为止,前面的查询均未运行,所有查询均生成0行:
SELECT *
FROM `orders`
WHERE STR_TO_DATE('collection_date', '%d %M, %Y') >= 2018-11-05
这在MySQL中也不起作用,您需要:
使用此语法的
CONVERT()
是一个SQL Server函数。该值在函数中位于第一位
您可以使用
STR\u TO\u DATE()
函数尝试此操作
WHERE collection_date >= CONVERT('2018-11-05', date)
SELECT *
FROM `orders`
WHERE collection_date >= STR_TO_DATE('20181105', '%Y%m%d')
这个问题对我很有用:
SELECT *
FROM orders
WHERE STR_TO_DATE(collection_date, '%d %M, %Y') >= '2018-11-05'
AND collection_time = '4:00 PM'
ORDER BY `orders`.`collection_date` DESC
实际上。。。您必须在
collection\u DATE
列上应用STR\u to\u DATE
,因为这是人类可读的日期所在。至于输入日期,只需以yyyy-mm-dd
格式指定即可:
SELECT *
FROM `orders`
WHERE STR_TO_DATE(collection_date, '%e %M, %Y') >= '2018-11-05'
您可以省去很多麻烦,只需将日期存储为日期。
Convert
是T-SQL的一个函数(所以SQL Server),对于MySql使用“Convert是T-SQL的一个函数(所以SQL Server),对于MySql使用”@ZoharPeled MySql还支持字符集之间的转换和类型之间的强制转换。@RaymondNijland感谢您提供的信息,我不知道。我主要使用SQL Server。str\u to\u dateime
。。。新函数?“CONVERT()是SQL Server函数。”MySQL还支持字符集之间的CONVERT-to-CONVERT和字符集之间的casttypes@RaymondNijland . . . 当然,你是对的。我专注于特定的语法。
SELECT *
FROM `orders`
WHERE STR_TO_DATE(collection_date, '%e %M, %Y') >= '2018-11-05'