簡體   English   中英

如何在sql中減去兩個日期列和兩個時間列

[英]How do I subtract two date columns and two time columns in sql

我有 4 列是

Startdate, 
enddate, 
starttime, 
endtime.  

我需要從enddate and endtime - startdate and starttime減去。 我將需要 sql 中四列的答案。

到目前為止,我找到了這個,但不認為這會正常工作。

SELECT DATEDIFF (day, enddate, startdate) as NumberOfDays  
DATEDIFF(hour,endtime,starttime) AS NumberOfHours 
DATEDIFF(minute,endtime,starttime) AS NumberOfMinutes 
from table;

謝謝你的幫助

編輯 - 現在我意識到問題是針對 SQL Server 2000 的,這個建議的答案可能不起作用。

SQL Server 2000 文檔可以在https://www.microsoft.com/en-us/download/details.aspx?id=18819找到。 安裝后,在安裝路徑中查找 tsqlref.chm,在該幫助文件中,您可以找到特定於 DATEDIFF 的信息。


根據原始問題的措辭,我假設開始/結束時間列的類型為 TIME,這意味着沒有日期部分。 考慮到這一點,以下內容將回答您的問題。

但是,請注意,根據您的數據,您將失去關於秒和毫秒的精度。

有關 DATEDIFF 的更多信息: https : //msdn.microsoft.com/en-us/library/ms189794.aspx


DECLARE @mytable AS TABLE 
    (
        startdate DATETIME,
        enddate DATETIME,
        starttime TIME,
        endtime TIME
    )


INSERT INTO @mytable (startdate, enddate, starttime, endtime)
VALUES      (GETDATE() - 376, GETDATE(), '00:00:00', '23:59')

SELECT      *
FROM        @mytable

SELECT      DATEDIFF(HOUR, startdate, enddate) AS [NumHours],
            DATEDIFF(MINUTE, starttime, endtime) AS [NumMinutes]
FROM        @mytable

這將產生類似於以下內容的輸出:

在此處輸入圖片說明

假設您有這樣的數據,您可以將 StartDate 添加到 StartTime 以獲取 StartDateTime,與 EndDateTime 相同

StartDate                StartTime                EndDate                  EndTime              
-----------------------  -----------------------  -----------------------  -----------------------
2014-05-01 00:00:00.000  1900-01-01 10:53:28.290  2014-05-07 00:00:00.000  1900-01-01 11:55:28.290

完成后,您可以獲得如下所示的天數、小時數和分鍾數:

select 
DATEDIFF(minute, StartDate + StartTime, EndDate + EndTime) / (24*60) 'Days',
(DATEDIFF(minute, StartDate + StartTime, EndDate + EndTime) / 60) % 24 'Hours',
DATEDIFF(minute, StartDate + StartTime, EndDate + EndTime) % 60 'Minutess'
  from YourTable

我們始終在幾分鍾內完成工作,以防止部分時間跨越午夜和部分時間跨越小時標記的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM