SQL Server - 比较存储为字符串或nvarchar的日期或日期时间?

时间:2013-03-28 03:28:58

标签: sql sql-server sql-server-2008 tsql

我根据日期时间格式制作了一个日期。但是,我将其作为字符串/ nvarchar存储在我的数据库中,而不是日期时间。我可以比较这些日期吗?这是一种不好的做法吗?

我现在使用nvarchar存储日期时间。

2 个答案:

答案 0 :(得分:2)

是的,您仍然可以比较它们,但这肯定是一种不好的做法,因为您需要将此字符串转换为日期数据类型,以便能够在它们之间进行比较。如果您在列上定义了索引,则它们将不再被使用,因为该列将被转换,并且它将在大型数据库上降低性能。

比较日期的例子如下:

SELECT *
FROM   tableName
WHERE  CONVERT(DATETIME, dateSTRColumn, XXX) > GETDATE()

其中XXX是以字符串形式存储的日期的当前格式。

答案 1 :(得分:1)

您必须使用cast or convert从字符串中解析日期时间或直接比较原始字符串。后者可能取决于字符串存储的格式。例如,如果日期以“YYYYMMDD”格式存储,则可以简单地比较string1<字符串2。