SQL TIMEFROMPARTS()函数
SQL的 TIMEFROMPARTS() 函数用于从单独的部分构建时间值。
该函数接受五个参数,如小时、分钟、秒、分数和精度,并返回表示指定时间的时间值。
- 如果作为参数的值无效,该函数将导致错误。
-
如果任何参数为空,则返回结果为空。
-
如果缺少任何参数,将返回错误。
语法
以下是SQL中 TIMEFROMPARTS() 函数的语法:
TIMEFROMPARTS(hour, minute, seconds, fractions, precision)
参数
此函数接受五个参数。以下是描述:
- hour - 指定时间值的小时部分。
-
minute - 指定时间值的分钟部分。
-
seconds - 指定时间值的秒钟部分。
-
fractions - 指定时间值的分数部分。
-
precision - 指定要返回的时间值的精度。
示例
让我们尝试使用以下查询构建一个不包含秒的时间值:
SQL> SELECT TIMEFROMPARTS(16, 45, 20, 0, 0) AS RESULT;
输出
在执行上面的查询时,输出如下所示 –
+----------+
| RESULT |
+----------+
| 16:45:20 |
+----------+
示例
让我们尝试使用TIMEFROMPARTS()函数的分数和精度参数:
- 当分数值为5且精度值为1时,分数的值表示1/10秒。
-
当分数值为5且精度值为2时,分数的值表示1/100秒。
-
当分数值为5且精度值为3时,分数的值表示1/1000秒。
SQL> SELECT TIMEFROMPARTS(16, 45, 20, 5, 1) AS RESULT_1;
SELECT TIMEFROMPARTS(16, 45, 20, 5, 2) AS RESULT_2;
SELECT TIMEFROMPARTS(16, 45, 20, 5, 3) AS RESULT_3;
错误
如果我们执行程序,结果如下所示 –
+------------+
| RESULT_1 |
+------------+
| 16:45:20.5 |
+------------+
+-------------+
| RESULT_2 |
+-------------+
| 16:45:20.05 |
+-------------+
+--------------+
| RESULT_3 |
+--------------+
| 16:45:20.005 |
+--------------+
示例
如果我们向函数的任何参数提供无效值,将会导致错误。
SQL> SELECT TIMEFROMPARTS(16, 4567876, 20, 843567886, 3) AS RESULT;
错误
当我们执行以上查询时,输出结果如下:
Cannot construct data type time, some of the arguments have values which are not valid.
示例
如果我们将函数的任何参数都设为null,则函数的结果也会是null。
SQL> SELECT TIMEFROMPARTS(16, null, 20, null, 3) AS RESULT;
输出
当我们执行上面的查询时,输出结果如下:
+--------+
| RESULT |
+--------+
| NULL |
+--------+
示例
我们需要提供函数的所有五个参数。如果我们不提供参数,函数将会报错。
SQL> SELECT TIMEFROMPARTS(16, 30, 20, 45) AS RESULT;
输出
如果我们执行上述查询,结果如下所示 –
The timefromparts function requires 5 argument(s).
示例
假设我们使用以下查询语句使用CREATE语句在SQL数据库中创建了名为STUDENTS的表:
SQL> CREATE TABLE STUDENTS(ID INT NOT NULL, NAME VARCHAR (200) NOT NULL, HOURS VARCHAR (200) NOT NULL, MINUTES VARCHAR (200) NOT NULL, SECONDS VARCHAR (200) NOT NULL)
现在,让我们使用下面的查询语句在STUDENTS表中插入一些记录-
SQL> INSERT INTO STUDENTS(ID, NAME, HOURS, MINUTES, SECONDS) VALUES(1, 'Dhruv', '02', '25', '45');
INSERT INTO STUDENTS(ID, NAME, HOURS, MINUTES, SECONDS) VALUES(2, 'Arjun', '05', '45', '20');
INSERT INTO STUDENTS(ID, NAME, HOURS, MINUTES, SECONDS) VALUES(3, 'Dev', '06','30', '30');
INSERT INTO STUDENTS(ID, NAME, HOURS, MINUTES, SECONDS) VALUES(4, 'Riya', '10', '15', '50');
INSERT INTO STUDENTS(ID, NAME, HOURS, MINUTES, SECONDS) VALUES(5, 'Aarohi', '12', '00', '00');
INSERT INTO STUDENTS(ID, NAME, HOURS, MINUTES, SECONDS) VALUES(6, 'Lisa', '16', '45', '25');
INSERT INTO STUDENTS(ID, NAME, HOURS, MINUTES, SECONDS) VALUES(7, 'Roy', '18', '10', '10');
我们可以使用以下查询验证表格是否已创建:
SQL> SELECT * FROM STUDENTS
表格 STUDENTS 在 SQL 数据库中成功创建。
+-----+--------+-------+---------+---------+
| ID | NAME | HOURS | MINUTES | SECONDS |
+-----+--------+-------+---------+---------+
| 1 | Dhruv | 02 | 25 | 45 |
| 2 | Arjun | 05 | 45 | 20 |
| 3 | Dev | 06 | 30 | 30 |
| 4 | Riya | 10 | 15 | 50 |
| 5 | Aarohi | 12 | 00 | 00 |
| 6 | Lisa | 16 | 45 | 25 |
| 7 | Roy | 18 | 10 | 10 |
+-----+--------+-------+---------+---------+
在这里,我们尝试使用以下查询将所有学生的时间值连接起来。
SQL> SELECT *, TIMEFROMPARTS(HOURS, MINUTES, SECONDS, 0, 5) AS TIMEFROMPARTS_VALUE FROM STUDENTS;
输出
执行上述查询时,输出结果如下:
+-----+--------+--------+---------+---------+---------------------+
| ID | NAME | HOURS | MINUTES | SECONDS | TIMEFROMPARTS_VALUE |
+-----+--------+--------+---------+---------+---------------------+
| 1 | Dhruv | 02 | 25 | 45 | 02:25:45.00000 |
| 2 | Arjun | 05 | 45 | 20 | 05:45:20.00000 |
| 3 | Dev | 06 | 30 | 30 | 06:30:30.00000 |
| 4 | Riya | 10 | 15 | 50 | 10:15:50.00000 |
| 5 | Aarohi | 12 | 00 | 00 | 12:00:00.00000 |
| 6 | Lisa | 16 | 45 | 25 | 16:45:25.00000 |
| 7 | Roy | 18 | 10 | 10 | 18:10:10.00000 |
+-----+--------+--------+---------+---------+---------------------+