我有一个数据库,我看到日期以字符串的形式存储。我可以在查询中比较这些日期(以字符串的形式)吗?
例如。列date1
商店09-11-1992 00:00:00
和date2
商店22-11-1992 00:00:00
执行如下查询是否明智:
select * from tablename WHERE date1 > "06-11-1992 00:00:00";
我有一个数据库,我看到日期以字符串的形式存储。我可以在查询中比较这些日期(以字符串的形式)吗?
例如。列date1
商店09-11-1992 00:00:00
和date2
商店22-11-1992 00:00:00
执行如下查询是否明智:
select * from tablename WHERE date1 > "06-11-1992 00:00:00";
如果您的字符串采用可识别的格式,您应该能够将它们转换为日期时间并进行比较。
select *
from tablename
where cast(date1 as datetime) > cast('06-11-1992 00:00:00' as datetime)
但是,我建议日期使用ISO 8601格式。这是一种可能性:
cast('1992-11-06T00:00:00' as datetime)
date2
由于您的示例,我在这里假设 DD-MM-YYYY 。
只要确保你知道哪一天是哪一个月。希望您的字符串始终采用相同的格式,并且符合您的区域设置。
请注意:您可能必须设置日期格式才能从数据中获得正确的输出:
set dateformat dmy
select cast('06-11-1992 00:00:00' as datetime) -- returns 1992-11-06 00:00:00
set dateformat mdy
select cast('06-11-1992 00:00:00' as datetime) -- returns 1992-06-11 00:00:00