如何比较只有日期部分今天交货日期
我想创建一个报告,从今天交货日期的SQL Server数据库获取记录。如何比较只有日期部分今天交货日期
我已经试过
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)
将工作一样好。
如果所有交货日期都没有时间部分,那么也应考虑将列类型更改为DATE以节省一些空间。 –
非常感谢Dhruv。我试过这个代码,它的工作。 Badi Mehrbaani aapki。再次感谢你。 – user1777929
@ user1777929您的评论使我的一天:) – DhruvJoshi
如果DELIVERY_DATE总是午夜(00:00:00.000
),那么这样的比较吧:
select * from (tablename)
where delivery_date = datediff(d, 0, getdate())
使用datediff
这样是截断datetime值的时间部分的快捷方式。
哟需要删除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 @如今= CONVERT(日期,GETDATE())
SELECT * FROM(表名) 其中DELIVERY_DATE = @Today
您可以将'getdate()'强制转换为'日期' - 这会切断时间。或者使用日期范围,如果'delivery_date'存储也可能包含时间(如果是这样,我建议使用这种方法,而不是将两边都转换为'date')。 –