Làm cách nào để tính chênh lệch tính bằng giây giữa hai ngày trong MySQL?

Thí dụ

Trả về sự khác biệt giữa hai giá trị ngày, tính bằng năm

CHỌN DATEDIFF(năm, '25/08/2017', '25/08/2011') AS DateDiff;

Tự mình thử »


Định nghĩa và cách sử dụng

Hàm DATEDIFF() trả về sự khác biệt giữa hai ngày

cú pháp

DATEDIFF(khoảng thời gian, ngày1, ngày2)

Giá trị tham số

Tham sốDescriptionintervalBắt buộc. Phần trở lại. Có thể là một trong các giá trị sau
  • năm, yyyy, yy = Năm
  • quý, qq, q = Quý
  • tháng, mm, m = tháng
  • dayofyear = Ngày trong năm
  • ngày, dy, y = Ngày
  • tuần, ww, wk = Tuần
  • ngày trong tuần, dw, w = Ngày trong tuần
  • giờ, hh = giờ
  • phút, mi, n = Phút
  • thứ hai, ss, s = Thứ hai
  • mili giây, ms = Mili giây
date1, date2Bắt buộc. Hai ngày để tính chênh lệch giữa

chi tiết kỹ thuật

hoạt động trong. Máy chủ SQL (bắt đầu từ năm 2008), Cơ sở dữ liệu Azure SQL, Kho dữ liệu Azure SQL, Kho dữ liệu song song

Thêm ví dụ

Thí dụ

Trả về sự khác biệt giữa hai giá trị ngày tháng

CHỌN DATEDIFF(tháng, '25/08/2017', '25/08/2011') AS DateDiff;

Tự mình thử »

Thí dụ

Trả về sự khác biệt giữa hai giá trị ngày, tính bằng giờ

CHỌN DATEDIFF(giờ, '25/08/2017 07. 00', '25/08/2017 12. 45') AS DateDiff;

Tự mình thử »

Với hàm thời gian SQL Server DATEDIFF, có thể tính chênh lệch giữa hai ngày theo giờ, phút và giây nhưng mỗi lần chỉ tính một đơn vị. Ví dụ: chỉ giây, hoặc chỉ phút hoặc chỉ giờ. Tập lệnh SQL Server này sử dụng hàm DATEDIFF và tính toán theo giờ, phút và giây. Vì vậy, việc tính toán sự khác biệt giữa ngày bắt đầu và ngày kết thúc không đơn giản với SQL Server. Bài đăng này chỉ cho bạn cách thực hiện với một truy vấn ví dụ đơn giản, được giải thích từng bước

Mục lục

1. Chênh lệch thời gian tính bằng giờ phút và giây với SQL Server

Do đó, làm ví dụ, các truy vấn SQL đơn giản này đang sử dụng SQL Server DATEDIFF, DATEPART hoặc hàm toán học modulo với hai dấu thời gian chênh lệch chính xác một giờ. Và mỗi truy vấn chỉ cho một đơn vị. Nói cách khác, chúng ta phải kết hợp hoặc nối nhiều truy vấn để có được giờ, phút và giây trong một truy vấn SQL duy nhất. Bên dưới mỗi truy vấn đang trả về một đơn vị

Các truy vấn bên dưới hiển thị 3 loại kết quả khác nhau. Tuy nhiên, mỗi đơn vị thời gian không phải là thời gian mà chỉ là một đơn vị duy nhất. Vì vậy, bắt buộc phải nối chúng và chuyển đổi chúng

  1. Đầu tiên, tính toán sự khác biệt trong vài giây
  2. Sau đó phút
  3. kéo dài hàng giờ
-- Declare and initialize two variables with exactly one hour of difference: 9 - 8 = 1h 
DECLARE @DateStart 	DATETIME
DECLARE @DateEnd 	DATETIME
SET @DateStart 	= '2022-03-10 08:00:00'
SET @DateEnd 	= '2022-03-10 09:00:00'

-- SQL Query returns difference in seconds : 3600 seconds
SELECT DATEDIFF(SECOND, @DateStart, @DateEnd) AS [Difference in Seconds]

-- SQL Query returns difference in minutes : 60 minutes
SELECT DATEDIFF(MINUTE, @DateStart, @DateEnd) AS [Difference in Minutes]

-- SQL Query returns difference in hours : 1 hour
SELECT DATEDIFF(HOUR, @DateStart, @DateEnd) AS [Difference in Hours]

Hoặc ở định dạng ngắn gọn hơn, chỉ sử dụng 3 dòng mã, nhưng chỉ tính toán sự khác biệt trong vài phút

-- Declare and initialize two variables with exactly one hour of difference: 9 - 8 = 1h 
DECLARE @DateStart DATETIME = '2022-03-10 08:00:00',
        @DateEnd   DATETIME = '2022-03-10 09:00:00';

-- SQL Query returns difference in hours : 1 hour
SELECT DATEDIFF(HOUR, @DateStart, @DateEnd) AS [Difference in Hours];

Tìm bên dưới ảnh chụp màn hình sau khi thực hiện truy vấn bằng SSMS

Calculate the difference between two dates in SQL ServerTính toán sự khác biệt giữa hai ngày trong SQL Server

2. Sự khác biệt giữa hai dấu thời gian trong một truy vấn T-SQL

Chẳng hạn, để có được sự khác biệt về giờ, phút và giây, hãy sử dụng truy vấn này, truy vấn này chỉ hoạt động nếu số giờ nhỏ hơn 99. Ngoài ra, hãy thay đổi tổng số tính bằng giây theo Giờ, Phút và Giây, ví dụ với 3 giờ = 3600 * 3 = 14400

DECLARE @TimeInSeconds INT
SET 	@TimeInSeconds = 14400

SELECT
RIGHT('0' + CAST(@TimeInSeconds / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((@TimeInSeconds / 60) % 60 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST(@TimeInSeconds % 60 AS VARCHAR),2)

3. Tính chênh lệch bằng hàm DATEADD

Thật vậy, các truy vấn SQL này tính toán chênh lệch thời gian bằng cách sử dụng giây đầu tiên (nhân với một giờ tính bằng giây là 60 * 60 = 3600. Sau đó, sử dụng mili giây (nhân với một giờ tính bằng mili giây là 60 * 60 * 1000 = 3600 * 1000). Chắc chắn, cuối cùng nó cũng hiển thị kết quả mà không cần mili giây bằng cách sử dụng hàm CONVERT và định dạng ngày dữ liệu 108

-- Using the seconds as a base for conversion
select CONVERT(varchar, dateadd(s, 3 * 3600 , getdate()), 108) AS [Hours Minutes Seconds]

-- Using the milliseconds as a base for conversion
select CONVERT(varchar, dateadd(ms, 3 * 3600 * 1000, getdate()), 108) AS [Hours Minutes Seconds]

4. Tính chênh lệch giữa hai ngày bằng hàm DATEPART

Một tùy chọn khác để tính chênh lệch theo phút và giây là sử dụng hàm T-SQL DATEPART

DECLARE @DateStart DATETIME = '2022-03-10 08:00:00',
        @DateEnd   DATETIME = '2022-03-10 09:00:00';

SELECT 
    DATEPART(HOUR, @DateEnd)   - DATEPART(HOUR, @DateStart)   as [Difference in Hours],
    DATEPART(MINUTE, @DateEnd) - DATEPART(MINUTE, @DateStart) as [Difference in Minutes],
    DATEPART(SECOND, @DateEnd) - DATEPART(SECOND, @DateStart) as [Difference in Seconds];

Kết luận về tính chênh lệch thời gian trong T-SQL

Trong bài đăng ngắn này, chúng ta đã thấy cách tính chênh lệch thời gian của SQL Server theo giờ, phút và giây bằng hàm T-SQL DATEDIFF. Trong số nhiều giải pháp khả thi, nên sử dụng nhiều chức năng cùng nhau. Đây là tài liệu chính thức của Microsoft về hàm thời gian SQL Server DATEADD()

Làm cách nào để trừ ngày trong MySQL?

Hàm DATE_SUB() trừ một khoảng thời gian/ngày từ một ngày và sau đó trả về ngày.

Làm cách nào để tính chênh lệch giữa 2 ngày trong SQL?

Hàm DATEDIFF() trả về chênh lệch giữa hai ngày.

Làm cách nào để trích xuất giây từ dấu thời gian trong SQL?

Chuỗi thời gian có thể được gán trực tiếp cho biến ngày giờ là 1900-01-01 20. 10. 10. .
KHAI BÁO @time datetime = '20. 10. 10'
chọn total_seconds =DATEDIFF(giây,0,@thời gian)
chọn total_seconds =DATEDIFF(giây,0,'20. 10. 10')