将 SQL Server 中的两个日期与 between 语句进行比较,并从日期时间中删除时间



如何将SQL Server数据库中的两个日期与between语句进行比较并从其值中删除时间?

这是我的代码:

select 
sum(TbDeals.dealPrice) as sumofvalues 
from 
DNN_TbDeals
where 
Deals.dealStartDate between Convert(Date, Convert(datetime, '2017-07-10 22:21:16.233')) 
and Convert(Date, Convert(datetime, '2017-07-10 22:21:16.233'))

假设Deals.dealStartDateDateTime列,则不必转换两次 - 如果要between2 个日期,请使用固定格式转换一次,这样您就不必删除时间字符串。

另外 - 在您的问题中,您发布了一个日期完全相同between。这可能是您没有得到任何结果的原因。

请尝试以下操作:

select sum(TbDeals.dealPrice) as sumofvalues 
from DNN_TbDeals
where 
Deals.dealStartDate
between 
Convert(datetime, '2016-01-01 22:21:16.233', 101)
and 
Convert(datetime, '2017-08-28 22:21:16.233', 101)

希望我很好地理解你的问题,要比较两个日期时间格式,其中小时的差异,你可以这样做:

SELECT DATEDIFF(HOUR,@DATETIME1,@DATETIME2) AS DIFFERENCES

要从日期时间变量中获取小时数,您可以执行以下操作:

DECLARE @dateTime2 AS DATETIME = '2013-04-04 00:00:00.000'
SELECT CONVERT(DATE,@dateTime2, 101)

在您的情况下,如果您想比较两个日期,然后花费小时数,您的查询可以如下所示:

DECLARE @dateTime1 AS DATETIME= '2017-07-10 22:21:16.233'
DECLARE @dateTime2 AS DATETIME= '2017-07-10 22:21:16.233'
SELECT
SUM(TbDeals.dealPrice) ASsumofvalues 
FROM
DNN_TbDeals
WHERE
Deals.dealStartDate BETWEEN CONVERT(DATE,@dateTime1,101)
AND CONVERT(DATE,@dateTime2,101)

从你的代码

where 
Deals.dealStartDate between Convert(Date, Convert(datetime, '2017-07-10 22:21:16.233')) 
and Convert(Date, Convert(datetime, '2017-07-10 22:21:16.233'))

如果我们从您给定的日期中删除小时数,那么日期之间的两个时间将相同,就像

where 
Deals.dealStartDate between '2017-07-10' and '2017-07-10'

这可能不会给你和结果很明显。但是,如果您的日期确实不同,那么以下查询可能会对您有所帮助。

SELECT SUM(TbDeals.dealPrice) as sumofvalues 
FROM DNN_TbDeals
WHERE CONVERT(datetime, Yourdate_as_string, 103) <=  CONVERT(datetime, Yourdate_as_string, 103)

使用 DATEDIFF date 内置函数

SELECT SUM(TbDeals.dealPrice) as sumofvalues 
FROM DNN_TbDeals
WHERE DATEDIFF(DAY,Deals.dealStartDate,'2017-07-10 22:21:16.233') <= 0 AND
DATEDIFF(DAY,Deals.dealStartDate,'2017-07-10 22:21:16.233') >= 0 
select sum function column,CONVERT(nvarchar,DateColumnName,101) DateColumnName  
from tableName where DateColumnName between '08/28/2017' and '08/30/2017'

不需要使用CONVERT(),可能需要使用 ISNULL()

SELECT SUM(ISNULL(TbDeals.dealPrice,0)) AS sumofvalues 
FROM DNN_TbDeals
WHERE Deals.dealStartDate BETWEEN '2017-07-10 22:21:16.233'
AND '2017-07-10 22:21:16.233';

最新更新