My Opera is closing 3rd of March

Hoang Ha's Blog

Hoang Ha lives in HCMC, Viet Nam

Subscribe to RSS feed

So sánh sự khac nhau theo ngày, giờ, phút và giây giữa 2 ngày trong sql server

Có rất nhiều người thường đặt câu hỏi liên quan tới việc tìm ra sự khác nhau giữa 2 ngày trong sql server. Với kết quả được mong đợi là Days, Hours, Minute và Seconds. Đoạn truy vấn dưới đây sẽ mô tả cách để tìm ra sự khác nhau giữa 2 ngày trong Sql server:

DECLARE @Startdate DATETIME, @Enddate DATETIME
SET @Startdate = '2011-01-31 12:00:00'
SET @Enddate = '2011-02-07 23:59:59'

-- Tổng số seconds trong 1 ngày
DECLARE @TotalSec int
SET @TotalSec = 24*60*60;

-- Chuyển đổi DateDiff vào seconds
DECLARE @DiffSecs int
SET @DiffSecs = DATEDIFF(SECOND, @Startdate, @Enddate)

SELECT
CONVERT(char(2), (@DiffSecs/@TotalSec))as [Days],
CONVERT(char(2), ((@DiffSecs%@TotalSec)/3600)) as [Hours],
CONVERT(char(2), (((@DiffSecs%@TotalSec)%3600)/60)) as [Minutes],
CONVERT(char(2), (((@DiffSecs%@TotalSec)%3600)%60)) as [Seconds]


Câu truy vấn ở trên khá đơn giản. Trước tiên chúng ta tính toán tổng số seconds trong ngày và lưu trữ chúng trong một biến @TotalSec. Sau đó, chúng ta sử dụng hàm DATEDIFF - tính toán sự khác nhau giữa 2 ngày (được quy đổi ra second) và lưu trữ trong một biến khác. Cuối cùng, chúng ta sử dụng hàm CONVERT để áp dụng một số tính toán và lấy ra được sự khác nhau giữa 2 ngày theo days, hours, minutes và seconds.