SQL Server CE日期存储在字符串中:如何比较

时间:2013-05-14 18:14:33

标签: sql sql-server sql-server-ce

我有一个数据库,其中,我看到日期以字符串的形式存储。我可以在查询中比较这些日期(以字符串的形式)吗?

例如。专栏date1存储09-11-1992 00:00:00date2商店22-11-1992 00:00:00

按如下方式执行查询是否明智:

select * from tablename WHERE date1 > "06-11-1992 00:00:00";

1 个答案:

答案 0 :(得分:2)

如果您的字符串采用可识别的格式,那么您应该cast将它们设置为日期时间并进行比较。

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 the date format才能从您的数据中获得正确的输出:

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