在MS SQL中搜索当天后

时间:2017-07-10 09:05:21

标签: sql-server

我有一张桌子,看起来像这样: enter image description here

我想只选择具有当前日期的行。

SELECT Mandant, BelId, Typ, Datum FROM myTable WHERE Datum = DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0)

这不起作用我得到一张空桌

SELECT Mandant, BelId, Typ, Datum FROM myTable WHERE Datum = CONVERT(date,GETDATE())

这也行不通。

我试图转换基准列

SELECT Mandant, BelId, Typ, CONVERT(date,Datum) AS PPDatum FROM myTable WHERE PPDatum = CONVERT(date,GETDATE())

我收到一个错误: 列名称无效

我做错了什么?

2 个答案:

答案 0 :(得分:2)

这将有效:

SELECT Mandant, BelId, Typ, Datum
FROM myTable
WHERE Datum >= CAST(GETDATE() AS DATE)
AND Datum <= GETDATE();

它将确保Datum大于'2017-07-10'且小于当前时间戳。

您还可以执行以下操作:

SELECT Mandant, BelId, Typ, Datum
FROM myTable
WHERE CAST(Datum AS DATE) = CAST(GETDATE() AS DATE);

但这会导致执行计划不像上面那样漂亮。

答案 1 :(得分:0)

应该像

一样简单
SELECT Mandant, BelId, Typ, Datum 
FROM myTable WHERE cast(Datum as date) = cast(GETDATE() as date)