我有这样的查询:
SELECT DISTINCT
[Date_of_Receipt]
FROM RPT_VIEW_Receive
WHERE CAST([Date_of_Receipt] AS NVARCHAR) >= '12-12-2016'
ORDER BY [Date_of_Receipt];
SELECT DISTINCT
[Date_of_Receipt]
FROM RPT_VIEW_Receive;
我有一个名为 RPT_VIEW_Receive
的视图在我看来,所有日期都大于2017年,
但是在我的第一个查询中,我想要显示大于2016年的所有记录..但它没有显示所有记录,
可能是什么问题???
答案 0 :(得分:1)
尝试这个..检查你通过的第二个操作数中的静态日期(12-12-2016)
SELECT DISTINCT
[Date_of_Receipt]
FROM RPT_VIEW_Receive
WHERE CAST([Date_of_Receipt] AS date) >= CAST('12-12-2016' AS date)
ORDER BY [Date_of_Receipt];
SELECT DISTINCT
[Date_of_Receipt]
FROM RPT_VIEW_Receive;
答案 1 :(得分:1)
您的问题似乎与日期列[Date_of_Receipt]
的格式有关。
我们必须注意日期是DD / MM / YYYY。
尝试使用CONVERT
代替CAST
。
SELECT DISTINCT
CONVERT(DATE,[Date_of_Receipt],103)
FROM RPT_VIEW_Receive
CONVERT
的最后一个参数是我们用于解析的格式。
这应该有用。
答案 2 :(得分:0)
请尝试这样..不要在where子句中使用强制转换。它会妨碍性能。 Date_of_Receipt的数据类型是什么?
select distinct [Date_of_Receipt] from RPT_VIEW_Receive
where [Date_of_Receipt] >= '20170101'
order by [Date_of_Receipt]
答案 3 :(得分:0)
尝试此查询如果您将日期存储为nvarchar(50)
。
SELECT DISTINCT [Date_of_Receipt]
FROM Table
WHERE Cast([Date_of_Receipt] AS DATE) >= '12/12/2016'
ORDER BY [Date_of_Receipt];
如果日期存储为date
(建议使用),则可以执行此操作。
SELECT DISTINCT [Date_of_Receipt]
FROM Table
WHERE [Date_of_Receipt] >= '12/12/2016'
ORDER BY [Date_of_Receipt];
注意:这将显示大于11/12/2016
的所有记录。如果您要显示大于2016年的所有记录,请使用01/01/2017
代替12/12/2016
。