Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 当交货日期为今天时,如何仅比较日期部分_Sql Server_Getdate - Fatal编程技术网

Sql server 当交货日期为今天时,如何仅比较日期部分

Sql server 当交货日期为今天时,如何仅比较日期部分,sql-server,getdate,Sql Server,Getdate,我正在尝试创建一个报告,该报告从交付日期为今天的SQL Server数据库中获取记录 我试过了 select * from (tablename) where delivery_date = getdate() 虽然这没有给我任何错误,但也没有给我任何记录 我认为这是因为所有日期都是这样的: 2016-03-15 00:00:00.000 也许,我需要截断日期以删除时间戳,然后重试?您可以尝试下面这样的查询 select * from (tablename) where CAST(deliv

我正在尝试创建一个报告,该报告从交付日期为今天的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) 

也可以。

如果交货日期总是午夜(
00:00:00.000
),则按如下方式进行比较:

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

像这样使用
datediff
可以快速截断datetime值的时间部分。

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


我只需要创建两个参数。一个用于
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@StartTime DATETIME,
@结束时间日期时间
设置@StartTime=DATEDIFF(d,0,GETDATE())
设置@EndTime=DATEADD(d,1,@StartTime)
挑选*
来自[表名]
交货日期>=@StartTime
交货日期<@EndTime
试试这个:

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

select * from (tablename)
where delivery_date = @Today

您可以将
getdate()
转换为
date
——这将缩短时间。或者使用日期范围,如果
delivery\u date
存储的日期也可能包含时间(如果是这样,我建议使用此方法,而不是将双方都转换为
date
)。如果所有交付日期都没有时间部分,也可以考虑更改列类型,以节省一些空间。完美地在数据库日期中有一个时间部分,当我比较日期时,我不能得到我想要的结果,感谢SQL Server 2008或更晚的日期类型。
DECLARE @Today DATETIME
SET @Today= CONVERT(date, getdate())

select * from (tablename)
where delivery_date = @Today