"2"。
我写了一个查询,它返回的日期实际上早于上述日期的记录。
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
您正在将比较作为字符串而不是日期。 删除转换:
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"<</p>
为了完成Gordon Linoff的想法,你的代码应该看起来像这样:
SELECT
1
, CAST(AppliedDateTime AS DATE) AS AppliedDate
FROM
[MC_Tenders].[dbo].[AppliedWorks]
WHERE
CAST(AppliedDateTime AS DATE) >= @DateFrom;
编辑:我假设ApplyDateTime实际上存储为日期时间,或DATE以外的某些数据类型。显式 CAST 到 DATE 类型将去除时间部分,并允许 SQL 仅将日期组件与变量进行比较。