Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Các hàm vô hướng ODBC cho Ngày và Giờ trong SQL Server (Ví dụ T-SQL)

Bạn có thể sử dụng các hàm vô hướng ODBC khi chạy các câu lệnh T-SQL trong SQL Server. Có nhiều loại hàm vô hướng ODBC khác nhau, bao gồm hàm chuỗi, hàm số, hàm hệ thống và tất nhiên, hàm ngày / giờ (còn được gọi là hàm ngày, giờ và khoảng thời gian).

Dưới đây là ví dụ về các hàm ngày, giờ và khoảng thời gian bạn có thể sử dụng trong SQL Server.

Cú pháp

Đầu tiên, đây là cú pháp bạn cần sử dụng bất cứ khi nào bạn gọi một hàm vô hướng ODBC:

 CHỌN {fn  [(, .... n)]} 

Ở đâu <function_name> là tên của hàm và (<argument>,....n) là bất kỳ số lượng đối số tùy chọn nào.

Vì vậy, điều chính cần nhớ là khi bạn gọi một hàm vô hướng ODBC, bạn cần đặt lệnh gọi hàm trong dấu ngoặc nhọn ({} ) và đặt tiền tố tên bằng fn .

Ví dụ 1 - NOW ()

Hàm này trả về ngày và giờ hiện tại dưới dạng giá trị dấu thời gian.

 CHỌN {fn NOW ()} làm kết quả; 

Kết quả:

 + ------------------------- + | Kết quả || ------------------------- || 2018-06-13 21:52:25.667 | + ------------------------- + 

Ví dụ 2 - Dấu thời gian, Ngày và Giờ

CURRENT_TIMESTAMP() hàm trả về ngày địa phương hiện tại và giờ địa phương dưới dạng giá trị dấu thời gian. Bạn cũng có thể sử dụng CURRENT_DATE() để chỉ trả lại phần ngày và / hoặc CURRENT_TIME() để chỉ trả lại phần thời gian.

 SELECT {fn CURRENT_TIMESTAMP ()} AS 'Date &Time', {fn CURRENT_DATE ()} AS "Date", {fn CURRENT_TIME ()} AS "Time"; 

Kết quả:

 + ------------------------- + ------------ + ------- ------- + | Ngày và giờ | Ngày tháng | Thời gian || ------------------------- + ------------ + -------- ------ || 2018-06-13 21:57:29.197 | 2018-06-13 | 21:57:29.197 | + ------------------------- + ------------ + ---- ---------- + 

Ngoài ra, CURRENT_TIMESTAMP()CURRENT_TIME() cả hai đều chấp nhận một đối số tùy chọn để xác định độ chính xác giây của giá trị trả về.

Ví dụ:

 SELECT {fn CURRENT_TIMESTAMP (3)} AS 'Date &Time', {fn CURRENT_TIME (6)} AS 'Time'; 

Kết quả:

 + ------------------------- + ----------------- + | Ngày và giờ | Thời gian || ------------------------- + ----------------- || 2018-06-13 22:00:59.263 | 22:00:59.263000 | + ------------------------- + ------------------ + 

Trong ví dụ này, CURRENT_TIMESTAMP() trả về độ chính xác giây là 3, trong khi CURRENT_TIME() trả về độ chính xác giây là 6.

Ví dụ 3 - CURDATE () và CURTIME ()

Bạn có thể sử dụng CURDATE() và / hoặc CURTIME() như một sự thay thế cho các chức năng ngày và giờ ở trên:

 SELECT {fn CURDATE ()} AS 'Date', {fn CURTIME ()} AS 'Time'; 

Kết quả:

 + ------------ + -------------- + | Ngày tháng | Thời gian || ------------ + -------------- || 2018-06-13 | 22:05:20.013 | + ------------ + -------------- + 

Lưu ý rằng các đối số này không chấp nhận bất kỳ đối số nào, vì vậy nếu bạn cần chỉ định độ chính xác giây, hãy sử dụng CURRENT_DATE() và / hoặc CURRENT_TIME() thay vào đó.

Ví dụ 4 - Ngày và Tuần

Có một loạt các hàm vô hướng ODBC để trả về các phần cụ thể của giá trị ngày tháng. Các hàm này chấp nhận một đối số, là biểu thức ngày tháng để trích xuất phần ngày tháng mong muốn từ đó.

Dưới đây là các chức năng khác nhau để trả về phần ngày và tuần kể từ ngày:

 DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567'; SELECT {fn DAYNAME (@date)} AS 'DAYNAME', {fn DAYOFYEAR (@date)} AS 'DAYOFYEAR', {fn DAYOFMONTH (@date)} AS 'DAYOFMONTH', {fn DAYOFWEEK (@date)} AS 'DAYOFWEEK', {fn WEEK (@date)} AS 'WEEK'; 

Kết quả:

 + ----------- + ------------- + -------------- + ----- -------- + -------- + | DAYNAME | DAYOFYEAR | DAYOFMONTH | DAYOFWEEK | TUẦN || ----------- + ------------- + -------------- + ------ ------- + -------- || Thứ hai | 45 | 14 | 2 | 8 | + ----------- + ------------- + -------------- + ------ ------- + -------- + 

Trong trường hợp này, chúng tôi đã gán ngày cho một biến, sau đó chuyển biến đó cho mỗi hàm. Sau đó, hàm trả về phần ngày áp dụng.

Ví dụ 5 - Tháng, Quý và Năm

Dưới đây là các chức năng khác nhau để trả về phần tháng, quý và năm từ giá trị ngày / giờ:

 DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567'; CHỌN {fn YEAR (@date)} AS 'YEAR', {fn MONTH (@date)} AS 'MONTH', {fn MONTHNAME (@date)} NHƯ 'MONTHNAME', {fn QUARTER (@date)} NHƯ 'QUARTER'; 

Kết quả:

 + -------- + --------- + ------------- + ----------- + | NĂM | THÁNG NĂM | MONTHNAME | QUÝ || -------- + --------- + ------------- + ----------- || Năm 2000 | 2 | Tháng 2 | 1 | + -------- + --------- + ------------- + ----------- +  

Ví dụ 6 - Giờ, Phút và Giây

Dưới đây là các chức năng khác nhau để trả về phần giờ, phút và giây từ giá trị ngày / giờ:

 DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567'; CHỌN {fn HOUR (@date)} AS 'HOUR', {fn MINUTE (@date)} AS 'MINUTE', {fn SECOND (@date)} NHƯ 'SECOND'; 

Kết quả:

 + -------- + ---------- + ---------- + | GIỜ | PHÚT | THỨ HAI || -------- + ---------- + ---------- || 7 | 31 | 58 | + -------- + ---------- + ---------- + 

Ví dụ 7 - Hàm EXTRACT ()

Ngoài ra còn có một hàm vô hướng ODBC được gọi là EXTRACT() , cho phép bạn trích xuất các phần ngày khác nhau từ giá trị ngày / giờ. Ví dụ bên dưới.

Năm, Tháng và Ngày

 DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567'; CHỌN {fn EXTRACT (YEAR FROM @date)} AS 'YEAR', {fn EXTRACT (MONTH FROM @date)} AS 'MONTH ', {fn EXTRACT (DAY FROM @date)} NHƯ' NGÀY '; 

Kết quả:

 + -------- + --------- + ------- + | NĂM | THÁNG NĂM | NGÀY || -------- + --------- + ------- || Năm 2000 | 2 | 14 | + -------- + --------- + ------- + 

Giờ, Phút và Giây

 DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567'; CHỌN {fn EXTRACT (HOUR FROM @date)} AS 'HOUR', {fn EXTRACT (MINUTE FROM @date)} AS 'MINUTE ', {fn EXTRACT (SECOND FROM @date)} NHƯ' SECOND '; 

Kết quả:

 + -------- + ---------- + ---------- + | GIỜ | PHÚT | THỨ HAI || -------- + ---------- + ---------- || 7 | 31 | 58 | + -------- + ---------- + ---------- + 

Ví dụ 8 - Hàm TIMESTAMPADD ()

TIMESTAMPADD() cho phép bạn thêm một số cụ thể của khoảng thời gian được chỉ định (phần ngày / giờ) vào giá trị ngày / giờ. Hàm này chấp nhận ba đối số; khoảng thời gian (phần ngày / giờ) để thêm (ví dụ:tháng), số phần đó để thêm và giá trị ngày. Ví dụ bên dưới.

Năm, Quý, Tháng và Ngày

 DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567'; SELECT {fn TIMESTAMPADD (SQL_TSI_YEAR, 21, @date)} AS 'SQL_TSI_YEAR', {fn TIMESTAMPADD (SQL_TSI_QUARTER, 21, @date) } AS 'SQL_TSI_QUARTER', {fn TIMESTAMPADD (SQL_TSI_MONTH, 21, @date)} AS 'SQL_TSI_MONTH', {fn TIMESTAMPADD (SQL_TSI_DAY, 21, @date)} AS 'SQL_TSI_DAY'; 

Kết quả:

 SQL_TSI_YEAR | 2021-02-14 07:31:58.1234567SQL_TSI_QUARTER | 2005-05-14 07:31:58.1234567SQL_TSI_MONTH | 2001-11-14 07:31:58.1234567SQL_TSI_DAY | 2000-03-06 07:31:58.1234567 

Giờ, Phút và Giây

 DECLARE @date datetime2 ='2000-02-14 07:31:58.1234567'; SELECT {fn TIMESTAMPADD (SQL_TSI_HOUR, 5, @date)} AS 'SQL_TSI_HOUR', {fn TIMESTAMPADD (SQL_TSI_MINUTE, 5, @date) } AS 'SQL_TSI_MINUTE', {fn TIMESTAMPADD (SQL_TSI_SECOND, 5, @date)} AS 'SQL_TSI_SECOND', {fn TIMESTAMPADD (SQL_TSI_FRAC_SECOND, 5, @date)} AS 'SQL_TSI_FRAC_SECOND'; 

Kết quả:

 SQL_TSI_HOUR | 2000-02-14 12:31:58.1234567SQL_TSI_MINUTE | 2000-02-14 07:36:58.1234567SQL_TSI_SECOND | 2000-02-14 07:32:03.1234567SQL_TSI_FRAC_SECOND | 2000-02-14 07:31:58.1284567 

Ví dụ 9 - Hàm TIMESTAMPDIFF ()

TIMESTAMPDIFF() hàm trả về sự khác biệt giữa hai giá trị ngày / giờ. Hàm này chấp nhận ba đối số; khoảng thời gian (phần ngày / giờ) để tính toán sự khác biệt (ví dụ:tháng), ngày đầu tiên và ngày thứ hai. Hàm trả về số khoảng thời gian mà ngày đầu tiên lớn hơn ngày thứ hai. Ví dụ bên dưới.

Năm, Quý, Tháng, Tuần và Ngày

 DECLARE @ date1 datetime2 ='2000-02-14 07:31:58.1234567'; DECLARE @ date2 datetime2 =DATEADD (year, 1, @ date1); CHỌN {fn TIMESTAMPDIFF (SQL_TSI_YEAR, @ date1, @ date2)} NHƯ 'SQL_TSI_YEAR', {fn TIMESTAMPDIFF (SQLER_TSI_QUARTER, @ date1, @ date2)} ASQUARTER ', {fn TIMESTAMPDIFF (SQL_TSI_MONTH, @ date1, @ date2)} NHƯ' SQL_TSI_MONTH ', {fn TIMESTAMPDIFF (SQL_TSI_WEEK, @ date1, @ date2)} NHƯ' SQL_TSI_WEEK ', {fn TIMESTAMPDIFF (SQL_TSI_WEEK, @ date1, @ date2)} NHƯ' SQL_TSI_WEEK ', {fn TIMESTAMPDIFF date1, @ SQL_ date2) } NHƯ 'SQL_TSI_DAY'; 

Kết quả:

 + ---------------- + ------------------- + --------- -------- + ---------------- + --------------- + | SQL_TSI_YEAR | SQL_TSI_QUARTER | SQL_TSI_MONTH | SQL_TSI_WEEK | SQL_TSI_DAY || ---------------- + ------------------- + ---------- ------- + ---------------- + --------------- || 1 | 4 | 12 | 52 | 366 | + ---------------- + ------------------- + ---------- ------- + ---------------- + --------------- + 

Giờ, Phút và Giây

 DECLARE @ date1 datetime2 ='2000-02-14 07:31:58.1234567'; DECLARE @ date2 datetime2 =DATEADD (day, 1, @ date1); CHỌN {fn TIMESTAMPDIFF (SQL_TSI_HOUR, @ date1, @ date2)} NHƯ 'SQL_TSI_HOUR', {fn TIMESTAMPDIFF (SQL_TSI_MINUTE, @ date1, @ date2)} AS ' ', {fn TIMESTAMPDIFF (SQL_TSI_SECOND, @ date1, @ date2)} AS' SQL_TSI_SECOND ', {fn TIMESTAMPDIFF (SQL_TSI_FRAC_SECOND, @ date1, @ date2)} AS' SQL_TSI_FRAC_SECOND '; 
 Kết quả:

 + ---------------- + ------------------ + ---------- -------- + ----------------------- + | SQL_TSI_HOUR | SQL_TSI_MINUTE | SQL_TSI_SECOND | SQL_TSI_FRAC_SECOND || ---------------- + ------------------ + ----------- ------- + ----------------------- || 24 | 1440 | 86400 | 86400000 | + ---------------- + ------------------ + ----------- ------- + ----------------------- + 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ràng buộc duy nhất có điều kiện

  2. Thêm cột bảng mới vào vị trí thứ tự cụ thể trong Microsoft SQL Server

  3. Truy vấn đệ quy SQL Server

  4. Thêm tài khoản thư cơ sở dữ liệu vào cấu hình (T-SQL)

  5. Tìm hiểu cách Lưu trữ và Phân tích Tài liệu trên Hệ thống Tệp Windows với Tìm kiếm Ngữ nghĩa SQL Server - Phần 1