[英]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.