在本章中,无涯教程将讨论PL/SQL中的日期和时间。 PL/SQL中有两类与日期和时间相关的数据类型-
datetime 和 interval 数据类型都由字段组成,这些字段的值确定数据类型的值,下表列出了日期时间和间隔的字段及其可能的值。
Field Name | Valid Datetime Values | Valid Interval Values |
---|---|---|
YEAR | -4712 to 9999(不包括0年) | 任何非零整数 |
MONTH | 01 to 12 | 0 to 11 |
DAY | 01 to 31 | 任何非零整数 |
HOUR | 00 to 23 | 0 to 23 |
MINUTE | 00至59 | 0 to 59 |
SECOND | 00到59.9(n),其中9(n)是时间分数秒的精度 | 0到59.9(n).其中9(n)是间隔小数秒的精度 |
TIMEZONE_HOUR | -12至14 | Not applicable |
TIMEZONE_MINUTE | 00至59 | Not applicable |
下表提供了Datetime函数(其中,x具有datetime值)-
S.No | Function Name & 描述 |
---|---|
1 | ADD_MONTHS(x,y); 将 y 个月加到 x 。 |
2 | LAST_DAY(x); 返回该月的最后一天。 |
3 | MONTHS_BETWEEN(x,y); 返回 x 和 y 之间的月数。 |
4 | NEXT_DAY(x,day); 返回 x 之后的下一个 day 的日期时间。 |
5 | NEW_TIME; 从用户指定的时区返回时间/日期值。 |
6 | ROUND(x [,unit]); 四舍五入 x 。 |
7 | SYSDATE(); 返回当前日期时间。 |
8 | TRUNC(x [,unit]); 删除 x 。 |
时间戳函数(其中,x具有时间戳值)-
S.No | Function Name & 描述 |
---|---|
1 | CURRENT_TIMESTAMP(); 返回包含当前会话时间以及会话时区的TIMESTAMP WITH TIME ZONE。 |
2 | EXTRACT({ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND } | { TIMEZONE_HOUR | TIMEZONE_MINUTE } | { TIMEZONE_REGION | } TIMEZONE_ABBR ) FROM x) 从 x 中提取并返回年,月,日,时,分,秒或时区。 |
3 | FROM_TZ(x,time_zone); 将TIMESTAMP x和time_zone指定的时区转换为TIMESTAMP WITH TIMEZONE。 |
4 | LOCALTIMESTAMP(); 返回包含会话时区中本地时间的TIMESTAMP。 |
5 | SYSTIMESTAMP(); 返回包含当前数据库时间以及数据库时区的TIMESTAMP WITH TIME ZONE。 |
6 | SYS_EXTRACT_UTC(x); 将TIMESTAMP WITH TIMEZONE x转换为包含以UTC表示的日期和时间的TIMESTAMP。 |
7 | TO_TIMESTAMP(x, [format]); 将字符串x转换为TIMESTAMP。 |
8 | TO_TIMESTAMP_TZ(x, [format]); 将字符串x转换为TIMESTAMP WITH TIMEZONE。 |
以下代码段说明了上述功能的用法-
示例1
SELECT SYSDATE FROM DUAL;
输出-
08/31/2012 5:25:34 PM
示例2
SELECT TO_CHAR(CURRENT_DATE, 'DD-MM-YYYY HH:MI:SS') FROM DUAL;
输出-
31-08-2012 05:26:14
示例3
SELECT ADD_MONTHS(SYSDATE, 5) FROM DUAL;
输出-
01/31/2013 5:26:31 PM
示例4
SELECT LOCALTIMESTAMP FROM DUAL;
输出-
8/31/2012 5:26:55.347000 PM
以下是间隔数据类型-
从YEAR到MONTH的间隔时间-使用YEAR和MONTH日期时间字段存储一段时间。
第二天的间隔-以天,小时,分钟和秒为单位存储一段时间。
S.No | Function Name & 描述 |
---|---|
1 | NUMTODSINTERVAL(x,interval_unit); 将数字x转换为INTERVAL DAY TO SECOND。 |
2 | NUMTOYMINTERVAL(x,interval_unit); 将数字x转换为INTERVAL YEAR TO MONTH。 |
3 | TO_DSINTERVAL(x); 将字符串x转换为INTERVAL DAY TO SECOND。 |
4 | TO_YMINTERVAL(x); 将字符串x转换为INTERVAL YEAR TO MONTH。 |
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)