SQL获取日期晚于指定日期

时间:2018-10-29 10:37:53

标签: mysql sql datetime

我正在使用一种以人类可读格式存储日期列的数据库。似乎很难计算出给定日期晚于的行。

该格式的存储方式为 2018年11月20日

我正在尝试返回collection_date晚于 2018年11月5日

的所有行

我尝试了以下查询,该查询引发错误。

SELECT * 
FROM `orders` 
WHERE collection_date >= CONVERT(datetime, '20181105')

这将引发以下错误消息:

enter image description here

这是我的数据库信息:

enter image description here

更新1: 我正在尝试以下查询。到目前为止,没有一个查询有效,所有查询都产生0行:

SELECT *
FROM `orders` 
WHERE STR_TO_DATE('collection_date', '%d %M, %Y') >= 2018-11-05

这也不起作用

5 个答案:

答案 0 :(得分:1)

在MySQL中,您需要STR_TO_DATE()

SELECT o.* 
FROM `orders` o
WHERE collection_date >= Str_To_Date(datetime, '%e %M, %Y');

CONVERT()使用此语法是SQL Server函数。

答案 1 :(得分:1)

实际上...您必须在STR_TO_DATE列上应用collection_date,因为那是人类可读的日期。至于 input 日期,只需以yyyy-mm-dd格式指定即可:

SELECT *
FROM `orders` 
WHERE STR_TO_DATE(collection_date, '%e  %M, %Y') >= '2018-11-05'

答案 2 :(得分:0)

该值首先在convert()函数中

WHERE collection_date >= CONVERT('2018-11-05', date)

Demo

答案 3 :(得分:0)

您可以使用STR_TO_DATE()函数

进行尝试
SELECT * 
FROM `orders` 
WHERE collection_date >= STR_TO_DATE('20181105', '%Y%m%d')

答案 4 :(得分:0)

此查询对我有用:

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