【发布时间】:2019-04-07 00:00:47
【问题描述】:
我有一个包含很多列的表,其中一列 (ScheduleDate) 是日期类型列,格式为 2018-10-31 (YYYY-MM-DD)。当我尝试查询表过滤以仅显示未来两天的条目时,它返回时没有结果
我的代码
SELECT
ScheduleDate
, Customer
, Status
FROM SomeTable_1
WHERE Status = 'Pending'
AND ScheduleDate = CAST(GETDATE() + 2 AS DATE)
我也尝试过这样的格式:
AND ScheduleDate = CONVERT(DATE, GETDATE() + 2)
我确定它是语法错误或其他问题,但 SQL Server 只是返回带有标题的空结果......
原来我的高级开发人员正在对表进行更改并删除了表中的大部分记录,我们只有下个月的记录。你们都是正确的,记录不在那里,我只是没有刷新我的SELECT * FROM SOMETABLE 结果。当我问他为什么我没有得到任何结果时,我不确定他为什么没有提到他已经这样做了。也许他是在恶作剧我。感谢大家的帮助,我现在要戴上傻帽躲在角落里了。
【问题讨论】:
-
您确定结果存在于 status = 'Pending' 且 scheduleDate 为 2 天后吗?
-
是的,在接下来的 30 天里,我每天大约有 75 条记录
-
ScheduleDate是实际的DATE列,而不是带有字符串作为日期的(N)VARCHAR列?您可以在问题中添加示例数据吗? -
你不是说-2吧?您明确指出,其值为
20181031,这是 2 天前,而不是 2 天后。另外,就我个人而言,我会使用DATEADD而不是`+2` (DATEADD(DAY,2,GETDATE())) -
正确的 squillman,列数据类型是
DATE我担心我的服务器有问题,因为我觉得我的语法没有问题...
标签: sql sql-server syntax sql-server-2014 where-clause