我编写了一个查询,该查询返回日期实际上比上述日期早的记录。
Declare @DateFrom date
Set @DateFrom= '02/Oct/2019'
SELECT 1, Convert(varchar(11), AppliedDateTime, 106)
FROM [MC_Tenders].[dbo].[AppliedWorks]
Where
Convert(varchar, AppliedDateTime,106) >= Convert(varchar, @DateFrom,106)
应用日期作为日期时间保存在表格中,例如2017-04-25 15:51:25.257
答案 0 :(得分:5)
您正在以字符串而不是日期进行比较。删除转换:
SELECT 1, Convert(varchar(11), AppliedDateTime, 106)
FROM [MC_Tenders].[dbo].[AppliedWorks]
WHERE AppliedDateTime >= @DateFrom;
类型106是dd mm yyyy
。当您比较字符串时,会比较字符串,而不是日期。对于格式106,首先比较天,因此:'18-10-2017' < '25-12-1900'
因为“1”&lt; “2”。
答案 1 :(得分:0)
为了完成Gordon Linoff的想法,你的代码应该是这样的:
SELECT
1
, CAST(AppliedDateTime AS DATE) AS AppliedDate
FROM
[MC_Tenders].[dbo].[AppliedWorks]
WHERE
CAST(AppliedDateTime AS DATE) >= @DateFrom;
编辑:我假设AppliedDateTime实际上存储为日期时间或DATE以外的某种数据类型。 DATE类型的显式CAST将删除时间组件,并允许SQL仅将日期组件与变量进行比较。