2017-08-28 169 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'; 
相關問題