如何比较交货日期为今天的日期部分

问题描述 投票:11回答:5

我正在尝试创建一个报告,从当前交付日期的SQL Server数据库中获取记录。

我试过了

select * from (tablename)
where delivery_date = getdate()

虽然这没有给我任何错误,但它也没有给我任何记录。

我假设这是因为所有日期都是这样的:

2016-03-15 00:00:00.000

也许,我需要截断日期以删除时间戳然后尝试?

sql-server getdate
5个回答
35
投票

您可以尝试如下查询

select * from (tablename)
where CAST(delivery_date as date) = CAST(getdate() as date)

此外,如果所有交货日期都有时间部分像00:00:00.000肯定那么

select * from (tablename)
where delivery_date = CAST(getdate() as date) 

会好起来的。


3
投票

如果delivery_date总是午夜(00:00:00.000),那么比较如下:

select * from (tablename)
where delivery_date = datediff(d, 0, getdate())

像这样使用datediff是截断日期时间值的时间部分的快速方法。


2
投票

我只创造了两个参数。一个用于StartTime,一个用于EndTime并在我的查询中使用它们。

DECLARE @StartTime DATETIME,
        @EndTime DATETIME 

SET @StartTime = DATEDIFF(d,0,GETDATE())
SET @EndTime = DATEADD(d,1,@StartTime)

SELECT  *
FROM    [tablename]
WHERE   delivery_date >= @StartTime
        AND delivery_date < @EndTime

0
投票

你需要删除delivery_date字段的时间部分和GETDATE()值。

SELECT *
FROM  (tablename)
WHERE DATEADD(dd, DATEDIFF(dd, 0, delivery_date), 0) = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)

0
投票

试试这个:

DECLARE @Today DATETIME
SET @Today= CONVERT(date, getdate())

select * from (tablename)
where delivery_date = @Today
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.