DECLARE @p_date DATETIME
SET @p_date = CONVERT( DATETIME, '14 AUG 2008 10:45:30',?)
SELECT *
FROM table1
WHERE column_datetime = @p_date
我需要比较日期时间,如:
@p_date=14 AUG 2008 10:45:30
column_datetime=14 AUG 2008 10:45:30
我该怎么做?
答案 0 :(得分:1)
问题不清楚,但看起来你正在尝试进行不返回你期望的行的相等匹配,所以我猜测问题是毫秒是有问题的。这里有几种方法:
第三种选择几乎总是最有效的,因为它可以很好地利用索引,并且不需要大量的CPU。
例如,在上面,由于你的精度是秒*,我会使用:
DECLARE @end datetime
SET @end = DATEADD(ss,1,@p_date)
然后添加表格的WHERE:
WHERE column_datetime >= @p_date AND column_datetime < @end
如果您在column_datetime上有聚簇索引,这将最有效,但如果您在column_datetime上有非聚集索引,则仍然可以正常工作。
[* =如果@p_date包含毫秒,你需要考虑更多关于是否通过DATEADD
修剪这些ms,或做更小的范围等等]
答案 1 :(得分:0)
我不太了解您的问题,但DateDiff可用于比较日期。