2011-10-27 63 views
1

我正在做一个表插入,这是工作正常。 但我想删除前也就是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',但仍然无法工作。

什么似乎是这里的问题?

感谢您的帮助!

编辑:

日期字段是[DATETIME]不为空,

我查询returnes:

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 
+0

'[Date]'的数据类型是什么?你能举一个正在退回的先前日期的例子吗?您的描述中还不清楚,如果您说**该查询**正在返回之前的日期,或者只是您在表中插入的某些预先存在的数据不符合该标准? –

+0

数据类型是[日期时间,非空]。我会编辑我的问题,参见上文。 – AceAlfred

+0

您的查询功能正常。你看到的行为取决于你在问题中没有提供的东西。试试这里:http://data.stackexchange。com/stackoverflow/q/116001/ –

回答

2

我做一个插入表,这是工作的罚款。但我想 删除1999年以前的数据。

不知道我正确理解这一点,但插入将行添加到表。如果你想删除行,你应该使用delete

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

感谢Mikael,一个简单的删除做了魅力。大声笑 :) – AceAlfred

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

1

如果该查询是选择行删除,您的尖括号是错误的,应该是小于,不大于。此外,WHERE条款那张FROM条款后,像这样:

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

不,这不是我想要的 – AceAlfred