过滤日期不起作用

时间:2011-10-27 16:34:29

标签: sql-server tsql datetime

我正在插入表格,这工作正常。 但我想删除1999年之前的数据。

这就是我在查询中所做的:

SELECT Transaction_No, Item_no, Item_description, Date, Sales 
FROM Inventory_Table
WHERE
[Date] > '1999-01-01 00:00:00.000'

但是它一直在新表中显示先前的数据。

我已尝试从日期删除'00:00:00.000',但仍无效。

这里似乎有什么问题?

感谢您的帮助!

编辑:

日期字段是[日期时间]非空,

我的查询返回:

Transaction_No      Item_No     Item_Description    Date                      Sales
001                 019238      Baseball            1900-01-01 00:00:00.000   100
002                 014952      Basketball          1900-01-01 00:00:00.000   250
-----------------------------------------------------------------------------------
254                 012459      Gloves              2005-05-05 00:00:00.000   550
255                 014563      Pants               2005-05-05 00:00:00.000   250

我想在1999年之前摆脱所有数据。 这是本例中的事务001和002。

也在没有任何帮助的情况下尝试过:

SELECT Transaction_No, Item_no, Item_description, Date, Sales 
FROM Inventory_Table
WHERE
Datepart(year,[Date]) > 1999

3 个答案:

答案 0 :(得分:2)

  

我正在插入表格,这工作正常。但是我要   删除1999年之前的数据。

我不确定我是否正确理解这一点,但插入会向表中添加行。如果要删除行,请使用delete

delete from Inventory_Table
where [Date] < '1999-01-01 00:00:00.000'

答案 1 :(得分:1)

如果此查询是选择要删除的行,则您的尖括号是错误的,应该小于,不大于。此外,WHERE子句位于FROM子句之后,如下所示:

select Transaction_No,
    Item_no,
    Item_description,
    date,
    Sales
from Inventory_Table
where [Date] < '1999-01-01 00:00:00.000'

答案 2 :(得分:0)

尝试将其投射到某个日期:

WHERE [Date] > CAST('1999-01-01 00:00:00.000' AS DATETIME)

如果您仍然遇到问题,可以尝试使用DATEDIFF功能:

WHERE DATEDIFF(DAY, CAST('1999-01-01 00:00:00.000' AS DATETIME), [Date]) > 0

您可以根据需要在上面的示例中调整粒度。它接受DAYHOURMINUTESECOND等。