选择小于特定日期的日期

时间:2014-01-15 12:29:44

标签: mysql date

我已将日期作为字符串存储在我的数据库中。我知道它不好,但是在我接管之前项目已经开发了一半并且日期存储为字符串,所以我继续以同样的方式。

现在我想从日期大于特定日期的表格中选择日期。

我尝试了以下查询

SELECT
 *
FROM
 dates 
where
 STR_TO_DATE(date, '%Y-%m-%d') > "2014-01-01" 

但它不会返回更大的值。 请帮我解决问题。

Demo

3 个答案:

答案 0 :(得分:3)

您的日期不是YYYY-MM-DD格式。使用正确的格式!

SELECT *
FROM dates 
where STR_TO_DATE(date, '%m-%d-%Y') > date('2014-01-01')

如果您要将日期存储为字符串,则最佳方式是使用ISO格式的YYYY-MM-DD。

您应该阅读str_to_date()here)上的文档。

答案 1 :(得分:0)

date的类型是什么?对于SQL中的字符串,我更喜欢'而不是"。我们假设日期是VARCHARTEXT字段(取决于您使用的数据库):

SELECT *
  FROM dates 
 WHERE STR_TO_DATE(date, '%Y-%m-%d') > STR_TO_DATE('2014-01-01', '%Y-%m-%d')

如果date是真实的DATE

SELECT *
  FROM dates 
 WHERE trim(date) > STR_TO_DATE('2014-01-01', '%Y-%m-%d')

或者您只需将其转换为数字格式date_format(date,'%Y%m%d') > 20140101

答案 2 :(得分:0)

将所有内容转换为日期,应该没问题。现在你要比较日期和字符串。