我已将日期作为字符串存储在我的数据库中。我知道它不好,但是在我接管之前项目已经开发了一半并且日期存储为字符串,所以我继续以同样的方式。
现在我想从日期大于特定日期的表格中选择日期。
我尝试了以下查询
SELECT
*
FROM
dates
where
STR_TO_DATE(date, '%Y-%m-%d') > "2014-01-01"
但它不会返回更大的值。 请帮我解决问题。
答案 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中的字符串,我更喜欢'
而不是"
。我们假设日期是VARCHAR
或TEXT
字段(取决于您使用的数据库):
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)
将所有内容转换为日期,应该没问题。现在你要比较日期和字符串。