2017-08-28 111 views
-2

删除时间如何两个日期在SQL Server数据库between语句比较和删除时间从它的价值?比较SQL Server中两个日期与声明之间,并从日期时间

这是我的代码:

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')) 
+1

那么什么是你所得到的错误? – Lamar

+0

它返回null。而当我使用datetime作为字符串,正确返回sum。 –

+0

您不必将'2017-07-10 22:21:16.233'字符串转换为datetime。你累了吗? – Lamar

回答

1

假设Deals.dealStartDateDateTime列,您不必转换两次 - 如果你想要做一个between 2日,有固定的格式转换一次吧,这样你不必删除时间字符串。

而且 - 你的问题,你贴与完全相同的日期一个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) 
+0

谢谢。但仍然返回null。 –

+0

是的,有日期时间格式 –

+0

我试了一下。但又返回null。 –

0

使用DATEDIFF日期内置函数

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 
+0

谢谢。但是它在所有日期期间返回52010。 –

+0

@ masoudamirian,您的日期范围 – Mansoor

+0

在几天之间是什么日期.even用户应该能够计算交易总和。 –

0

希望我深知你的问题,比较两个日期时间格式,其中的差别是在时间,你可以这样做:

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) 
+0

谢谢。但不幸的是返回null。 –

+0

@masoudamirian你一直在写每一个答案,解决方案不起作用 - 显然你有问题的地方,而不是在日期。你检查过其他方向吗?准确地说是 –

+0

。你可以在sql server上测试这些答案。 –

0

从您的代码

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' 

这可能不会给你和结果obviously.But如果你的日期真的是不同的,那么下面的查询可以帮助你。

SELECT SUM(TbDeals.dealPrice) as sumofvalues 
FROM DNN_TbDeals 
WHERE CONVERT(datetime, Yourdate_as_string, 103) <= CONVERT(datetime, Yourdate_as_string, 103) 
0
select sum function column,CONVERT(nvarchar,DateColumnName,101) DateColumnName 
from tableName where DateColumnName between '08/28/2017' and '08/30/2017' 
+0

@ masoud amirian尝试上面的查询 –

+3

你可以添加一个你的代码的解释,为什么它解决了这个问题? *仅限代码*答案通常没有帮助。 – Zabuza

0

无需使用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';