SQL - DATETIME2FROMPARTS() 函式



SQL 的DATETIME2FROMPARTS()函式用於從單個日期和時間段構造一個datetime2值。

此函式接受八個引數,例如年、月、日、時、分、秒和精度,並返回一個表示指定時間的datetime2值。

  • 如果作為引數傳遞的值無效,則此函式將導致錯誤。

  • 如果任何引數為 null,則它將返回結果為 null。

  • 如果缺少任何引數,它將返回錯誤。

此函式主要用於當 datetime2 值的年、月、日、時、分、秒和小數秒有單獨的值時,並希望將其組合成單個 datetime2 值。

語法

以下是 SQL DATETIME2FROMPARTS()函式的語法:

DATETIME2FROMPARTS(year, month, day, hour, minute, seconds, fractions, precision)

引數

此函式接受八個引數。下面描述了相同的內容:

  • year - 指定 datetime2 值的年份段,以整數表示。

  • month - 指定 datetime2 值的月份段,以 1 到 12 之間的整數表示。

  • day - 指定 datetime2 值的日期段,以 1 到 31 之間的整數表示。

  • hour - 指定 datetime2 值的小時段,以 0 到 23 之間的整數表示。

  • minute - 指定 datetime2 值的分鐘段,以 0 到 59 之間的整數表示。

  • seconds - 指定 datetime2 值的秒段,以 0 到 59 之間的整數表示。

  • fractions - 指定 datetime2 值的小數部分,以 0 到 9999999 之間的整數表示。

  • precision - 指定要返回的 datetime2 值的精度。

示例

在以下示例中,我們嘗試使用以下查詢構造一個不帶秒小數的 datetime2 值:

SQL> SELECT DATETIME2FROMPARTS(2023, 02, 20, 06, 10, 45, 0, 0) AS RESULT;

輸出

執行上述查詢後,輸出將顯示如下:

+---------------------+
| RESULT              |
+---------------------+
| 2023-02-20 06:10:45 |
+---------------------+

示例

讓我們嘗試使用 SQL DATETIME2FROMPARTS()函式的小數和精度引數:

  • 當分數值為 5 且精度值為 1 時,分數值表示 5/10 秒。

  • 當分數值為 5 且精度值為 2 時,分數值表示 5/100 秒。

  • 當分數值為 5 且精度值為 3 時,分數值表示 5/1000 秒。

SQL> SELECT DATETIME2FROMPARTS(2023, 02, 20, 06, 10, 45, 5, 1) AS RESULT_1;  
SQL> SELECT DATETIME2FROMPARTS(2023, 02, 20, 06, 10, 45, 5, 2) AS RESULT_2;  
SQL> SELECT DATETIME2FROMPARTS(2023, 02, 20, 06, 10, 45, 5, 3) AS RESULT_3;

輸出

如果我們執行程式,則結果將如下所示:

+-----------------------+
| RESULT                |
+-----------------------+
| 2023-02-20 06:10:45.5 |
+-----------------------+

+------------------------+
| RESULT                 |
+------------------------+
| 2023-02-20 06:10:45.05 |
+------------------------+

+-------------------------+
| RESULT                  |
+-------------------------+
| 2023-02-20 06:10:45.005 |
+-------------------------+

示例

在這裡,我們為函式的任何引數提供無效值,這會導致錯誤。

SQL> SELECT DATETIME2FROMPARTS(2023, 16, 45, 29, 76, 88, 5, 1) AS RESULT;

輸出

當我們執行上述查詢時,輸出將獲得如下所示:

Cannot construct data type datetime2, some of the arguments have values which are not valid.

示例

如果我們將函式的任何引數提供為null,則該函式將返回 null。

SQL> SELECT DATETIME2FROMPARTS(2023, null, null, null, 34, 30, 5, 1) AS RESULT;  

輸出

當我們執行上述查詢時,輸出將獲得如下所示:

+--------+
| RESULT |
+--------+
| NULL   |
+--------+

示例

我們需要提供函式的所有五個引數。如果我們不提供它,則函式將導致錯誤。

SQL> SELECT DATETIME2FROMPARTS(2023, 02, 20, 06, 10) AS RESULT;  

輸出

如果我們執行上述查詢,則結果將如下所示:

The datetime2fromparts function requires 8 argument(s).

示例

假設我們在 SQL 資料庫中使用 CREATE 語句建立了一個名為 STUDENTS 的表,如下面的查詢所示:

SQL> CREATE TABLE STUDENTS(ID INT NOT NULL, NAME VARCHAR (200) NOT NULL, YEARS VARCHAR (200) NOT NULL, MONTHS VARCHAR (200) NOT NULL, DAYS VARCHAR (200) NOT NULL, HOURS VARCHAR (200) NOT NULL, MINUTES VARCHAR (200) NOT NULL, SECONDS VARCHAR (200) NOT NULL);

現在,讓我們使用 INSERT 語句在 STUDENTS 表中插入一些記錄,如下面的查詢所示:

SQL> INSERT INTO STUDENTS(ID, NAME, YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS) VALUES(1, 'Dhruv', '2000', '02', '01', '14', '30', '00');
INSERT INTO STUDENTS(ID, NAME, YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS) VALUES(2, 'Arjun', '2001', '05', '20', '02', '34', '45');
INSERT INTO STUDENTS(ID, NAME, YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS) VALUES(3, 'Dev', '2000', '05', '25', '05', '56', '45');
INSERT INTO STUDENTS(ID, NAME, YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS) VALUES(4, 'Riya', '2003', '01', '10', '17', '21', '23');
INSERT INTO STUDENTS(ID, NAME, YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS) VALUES(5, 'Aarohi','1999', '12', '20', '23', '36', '54');
INSERT INTO STUDENTS(ID, NAME, YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS) VALUES(6, 'Lisa', '2004', '07', '17', '10', '46', '13');
INSERT INTO STUDENTS(ID, NAME, YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS) VALUES(7, 'Roy', '2003', '09', '19', '04', '30', '00');

我們可以使用以下查詢驗證表是否已建立:

SQL> SELECT * FROM STUDENTS

表 STUDENTS 已成功在 SQL 資料庫中建立。

+----+-------+-------+--------+------+-------+---------+---------+
| ID | NAME  | YEARS | MONTHS | DAYS | HOURS | MINUTES | SECONDS |
+----+-------+-------+--------+------+-------+---------+---------+
| 1  | Dhruv | 2000  | 02     | 01   | 14    | 30      | 00      |
| 2  | Arjun | 2001  | 05     | 20   | 02    | 34      | 45      |
| 3  | Dev   | 2000  | 05     | 25   | 05    | 56      | 45      |
| 4  | Riya  | 2003  | 01     | 10   | 17    | 21      | 23      |
| 5  | Aarohi| 1999  | 12     | 20   | 23    | 36      | 54      |
| 6  | Lisa  | 2004  | 07     | 17   | 10    | 46      | 13      |
| 7  | Roy   | 2003  | 09     | 19   | 04    | 30      | 00      |
+----+-------+-------+--------+------+-------+---------+---------+

在這裡,我們連線所有學生的 datetime2 值以使用以下查詢檢索學生的出生日期和時間:

SQL> SELECT NAME, DATETIME2FROMPARTS(YEARS, MONTHS, DAYS, HOURS, MINUTES, SECONDS, 0, 2) AS STUDENTS_BIRTH_DATE_AND_TIME FROM STUDENTS;

輸出

當我們執行上述查詢時,輸出將獲得如下所示:

+--------+------------------------------+
| NAME   | STUDENTS_BIRTH_DATE_AND_TIME |
+--------+------------------------------+
| Dhruv  | 2000-02-01 14:30:00.00       |
| Arjun  | 2001-05-20 02:34:45.00       |
| Dev    | 2000-05-25 05:56:45.00       |
| Riya   | 2003-01-10 17:21:23.00       |
| Aarohi | 1999-12-20 23:36:54.00       |
| Lisa   | 2004-07-17 10:46:13.00       |
| Roy    | 2003-09-19 04:30:00.00       |
+--------+------------------------------+
sql-date-functions.htm
廣告