如何在交货日期为今天时仅比较日期部分
How to compare only date part when delivery date is today
我正在尝试创建一个从 SQL 服务器数据库获取记录的报告,其中交货日期是今天。
我试过了
select * from (tablename)
where delivery_date = getdate()
虽然那没有给我任何错误,但也没有给我任何记录。
我假设是因为所有日期都像:
2016-03-15 00:00:00.000
也许,我需要截断日期以删除时间戳然后尝试?
您可以尝试如下查询
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)
效果一样好。
如果delivery_date总是午夜(00:00:00.000
),那么这样比较:
select * from (tablename)
where delivery_date = datediff(d, 0, getdate())
像这样使用 datediff
是截断日期时间值的时间部分的快速方法。
您需要删除 delivery_date 字段的时间部分和 GETDATE() 值。
SELECT *
FROM (tablename)
WHERE DATEADD(dd, DATEDIFF(dd, 0, delivery_date), 0) = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)
我只想创建 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
试试这个:
DECLARE @Today DATETIME
SET @Today= CONVERT(date, getdate())
select * from (tablename)
where delivery_date = @Today
我正在尝试创建一个从 SQL 服务器数据库获取记录的报告,其中交货日期是今天。
我试过了
select * from (tablename)
where delivery_date = getdate()
虽然那没有给我任何错误,但也没有给我任何记录。
我假设是因为所有日期都像:
2016-03-15 00:00:00.000
也许,我需要截断日期以删除时间戳然后尝试?
您可以尝试如下查询
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)
效果一样好。
如果delivery_date总是午夜(00:00:00.000
),那么这样比较:
select * from (tablename)
where delivery_date = datediff(d, 0, getdate())
像这样使用 datediff
是截断日期时间值的时间部分的快速方法。
您需要删除 delivery_date 字段的时间部分和 GETDATE() 值。
SELECT *
FROM (tablename)
WHERE DATEADD(dd, DATEDIFF(dd, 0, delivery_date), 0) = DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)
我只想创建 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
试试这个:
DECLARE @Today DATETIME
SET @Today= CONVERT(date, getdate())
select * from (tablename)
where delivery_date = @Today