可以通过TO_DATE(‘2021-5-1’, ‘YYYY-MM-DD’) 来将字符串数据转换为日期类型数据。
SELECT SESSIONTIMEZONE, CURRENT_DATE, CURRENT_TIMESTAMP FROM dual;
SESSIONTIMEZONE:返回当前时区。Asia/Shanghai
CURRENT_DATE:返回当前日期和时间。02-5月 -21
CURRENT_TIMESTAMP:返回当前时间戳。 02-5月 -21 05.25.09.931610000 下午 ASIA/SHANGHAI
日期函数
MONTHS_BETWEEN(DATE1, DATE2) :获取两个日期之间的月份差
SELECT CEIL(MONTHS_BETWEEN(sysdate, hire_date))
FROM employees ORDER BY 1;
ADD_MONTHS(DATE, n) : 在日期上增加n个月。
SELECT ADD_MONTHS(sysdate,7) FROM dual; --02-12月-21
NEXT_DAY(日期, 星期几): 查找下一个星期几对应的日期。
SELECT NEXT_DAY(sysdate, ‘星期五‘) FROM dual; --07-5月-21
LAST_DAY(日期) : 查找当月最后一天日期
SELECT LAST_DAY(sysdate) FROM dual; --2021-05-31 18:50:44 (当前日期2021-5-2)
ROUND(日期, ‘MONTH‘) : 1~15日的日期,返回本月一日。16~31的日期,返回下个月一日。
ROUND(日期, ‘YEAR‘) : 1.1~6.30的日期,返回当年1.1日。7.1~12.31的日期,返回下年的1.1日。
SELECT ROUND(TO_DATE( ‘ 2021-7-1 ‘ , ‘ YYYY-MM-DD ‘ ), ‘ YEAR ‘ ) FROM dual; ROUND(TO_DATE( ‘ 2021 ------------------- 2022 - 01 - 01 00 : 00 : 00 SQL > SELECT ROUND(TO_DATE( ‘ 2021-5-15 ‘ , ‘ YYYY-MM-DD ‘ ), ‘ MONTH ‘ ) FROM dual; ROUND(TO_DATE( ‘ 2021 ------------------- 2021 - 05 - 01 00 : 00 : 00
TRUNC(日期, ‘MONTH‘) : 返回当个月的第一天日期,相对于ROUND,TRUNC不进行四舍五入。
TRUNC(日期, ‘YEAR‘) : 返回年的第一天日期,相对于ROUND,TRUNC不进行四舍五入。
SELECT TRUNC(TO_DATE( ‘ 2021-5-31 ‘ , ‘ YYYY-MM-DD ‘ ), ‘ MONTH ‘ ) FROM dual; TRUNC(TO_DATE( ‘ 2021 ------------------- 2021 - 05 - 01 00 : 00 : 00 SQL > SELECT TRUNC(TO_DATE( ‘ 2021-12-31 ‘ , ‘ YYYY-MM-DD ‘ ), ‘ YEAR ‘ ) FROM dual; TRUNC(TO_DATE( ‘ 2021 ------------------- 2021 - 01 - 01 00 : 00 : 00
日期的计算
从日期添加或者减去一个数字,得到结果的日期值。
SELECT sysdate+2 FROM dual; --当前2021.5.2, 加2后得到04-5月 -21。
日期之间相减,得到之间相差的天数。
SELECT CEIL((sysdate - hire_date)/7) AS 入职周数 FROM employees;
SELECT TO_DATE( ‘ 2021-05-01 ‘ , ‘ YYYY-MM-DD ‘ ) - TO_DATE( ‘ 2021-04-30 ‘ , ‘ YYYY-MM-DD ‘ ) AS 日期差异 FROM dual;
日期差异
----------
1
Oracle 19C学习 - 04. SQL单行函数
标签:sha oracl UNC 判断 类型 相减 mat acl 日期格
查看更多关于Oracle 19C学习 - 04. SQL单行函数的详细内容...