SYSDATETIME()
hàm trả về ngày và giờ hiện tại dưới dạng datetime2 (7) giá trị. Giá trị này được lấy từ hệ điều hành của máy tính mà phiên bản SQL Server đang chạy.
Bài viết này cung cấp các ví dụ về SYSDATETIME()
, bao gồm cả cách bạn có thể sử dụng nó với các chức năng khác để trả lại giá trị mà bạn quan tâm.
Cú pháp
Đầu tiên, đây là cú pháp:
SYSDATETIME ( )
Vì vậy, hàm này không thực sự chấp nhận bất kỳ đối số nào. Bạn chỉ cần gọi nó mà không cần bất kỳ đối số nào.
Ví dụ
Đây là ví dụ cơ bản về việc sử dụng SELECT
câu lệnh để trả về ngày và giờ hiện tại từ SYSDATETIME()
:
SELECT SYSDATETIME() AS Result;
Kết quả:
+-----------------------------+ | Result | |-----------------------------| | 2018-06-15 23:09:13.5852199 | +-----------------------------+
Vì vậy, như đã đề cập, nó trả về datetime2 (7) giá trị. datetime2 loại dữ liệu có phạm vi ngày lớn hơn và độ chính xác phân số mặc định lớn hơn so với ngày giờ kiểu dữ liệu (là kiểu dữ liệu GETDATE()
trả về - xem SYSDATETIME () so với GETDATE ():Sự khác biệt là gì?).
Trích xuất một phần của ngày
Nếu bạn chỉ muốn một phần của giá trị trả về, bạn có thể sử dụng DATEPART()
để chỉ trả lại phần ngày / giờ mà bạn quan tâm.
Ví dụ:
SELECT DATEPART(month, SYSDATETIME()) AS Result;
Kết quả:
+----------+ | Result | |----------| | 6 | +----------+
Đôi khi có nhiều cách để nhận được cùng một kết quả trong SQL Server. Đây là một ví dụ khác sử dụng MONTH()
chức năng:
SELECT MONTH(SYSDATETIME()) AS Result;
Kết quả:
+----------+ | Result | |----------| | 6 | +----------+
Cả hai chức năng đó đều trả về tháng hiện tại. Nhưng họ trả về chúng dưới dạng một số nguyên đại diện cho số tháng.
Nếu bạn muốn tháng tên thay vào đó, bạn có thể sử dụng DATENAME()
:
SELECT DATENAME(month, SYSDATETIME()) AS Result;
Kết quả:
+----------+ | Result | |----------| | June | +----------+
Định dạng ngày
Bạn cũng có thể sử dụng các hàm T-SQL khác để định dạng ngày tháng theo yêu cầu.
Đây là một ví dụ về việc sử dụng FORMAT()
chức năng định dạng kết quả:
SELECT FORMAT(SYSDATETIME(), 'd', 'en-US') AS 'd, en-US', FORMAT(SYSDATETIME(), 'd', 'en-gb') AS 'd, en-gb', FORMAT(SYSDATETIME(), 'D', 'en-US') AS 'D, en-US', FORMAT(SYSDATETIME(), 'D', 'en-gb') AS 'D, en-gb';
Kết quả:
+------------+------------+-----------------------+--------------+ | d, en-US | d, en-gb | D, en-US | D, en-gb | |------------+------------+-----------------------+--------------| | 6/15/2018 | 15/06/2018 | Friday, June 15, 2018 | 15 June 2018 | +------------+------------+-----------------------+--------------+
Các ví dụ khác tại Cách định dạng ngày và giờ trong SQL Server.
Tăng giá trị và Tìm sự khác biệt
Bạn có thể sử dụng các hàm như DATEDIFF()
để trả lại sự khác biệt giữa ngày hiện tại và một ngày khác.
Đây là một ví dụ về việc sử dụng DATEADD()
để thêm một tháng vào ngày hiện tại, sau đó tìm ra sự khác biệt về ngày:
DECLARE @date1 datetime2 = SYSDATETIME(); DECLARE @date2 datetime2 = DATEADD(month, 1, SYSDATETIME()); SELECT DATEDIFF(day, @date1, @date2) AS Result;
Kết quả:
+----------+ | Result | |----------| | 30 | +----------+