刚好最近在看官方文档,做个记录。
一、时间函数汇总
ADD_DAYS Function (Datetime) |
ADD_MONTHS Function (Datetime) |
ADD_MONTHS_LAST Function (Datetime) |
ADD_NANO100 Function (Datetime) |
ADD_SECONDS Function (Datetime) |
ADD_WORKDAYS Function (Datetime) |
ADD_YEARS Function (Datetime) |
CURRENT_DATE Function (Datetime) |
CURRENT_MVCC_SNAPSHOT_TIMESTAMP Function (Datetime) |
CURRENT_TIME Function (Datetime) |
CURRENT_TIMESTAMP Function (Datetime) |
CURRENT_UTCDATE Function (Datetime) |
CURRENT_UTCTIME Function (Datetime) |
CURRENT_UTCTIMESTAMP Function (Datetime) |
DAYNAME Function (Datetime) |
DAYOFMONTH Function (Datetime) |
DAYOFYEAR Function (Datetime) |
DAYS_BETWEEN Function (Datetime) |
EXTRACT Function (Datetime) |
HOUR Function (Datetime) |
ISOWEEK Function (Datetime) |
LAST_DAY Function (Datetime) |
LOCALTOUTC Function (Datetime) |
MINUTE Function (Datetime) |
MONTH Function (Datetime) |
MONTHNAME Function (Datetime) |
MONTHS_BETWEEN Function (Datetime) |
NANO100_BETWEEN Function (Datetime) |
NEXT_DAY Function (Datetime) |
NOW Function (Datetime) |
QUARTER Function (Datetime) |
SECOND Function (Datetime) |
SECONDS_BETWEEN Function (Datetime) |
UTCTOLOCAL Function (Datetime) |
WEEK Function (Datetime) |
WEEKDAY Function (Datetime) |
WORKDAYS_BETWEEN Function (Datetime) |
YEAR Function (Datetime) |
YEARS_BETWEEN Function (Datetime) |
二、时间函数用法
1.ADD相关函数
维度 | 函数 | 说明 |
---|---|---|
秒 | ADD_NANO100 | 将指定的 10^-7 单位的秒数添加到指定的 TIMESTAMP 值 |
秒 | ADD_SECONDS | 计算指定时间加上指定秒数的结果 |
天 | ADD_DAYS | 计算指定日期加上指定天数的结果 |
月 | ADD_MONTHS | 计算指定日期加上指定月数的结果 |
月 | ADD_MONTHS_LAST | 计算指定日期加上指定月数的结果,如果输入日期是月份的最后一天,则输出日期也是月份的最后一天 |
年 | ADD_YEARS | 计算指定日期加上指定年数的结果 |
select
ADD_DAYS(current_date,30) "ADD_DAYS", --指定日期加上指定天数
ADD_MONTHS('2023-2-28',1) "ADD_MONTHS",--指定日期加上指定月份
ADD_MONTHS_LAST('2023-2-28',1) "ADD_MONTHS_LAST", --指定日期加上指定月数,如果输入日期是月份的最后一天,则输出日期也是月份的最后一天
ADD_NANO100(current_timestamp,864000000000) "ADD_NANO100",--指定的 10^-7 单位的秒数添加到指定的 TIMESTAMP 值
ADD_SECONDS(current_timestamp,86400) "ADD_SECONDS",--指定时间加上指定秒数
ADD_YEARS(current_date,1)--指定时间加上指定年数
from dummy
函数 | 说明 |
---|---|
ADD_WORKDAYS | 通过向起始日期添加一定数量的工作日来计算日期 |
这个函数我没有用过,它有一个前提,可以直接看官网定义:
为了使用 ADD_WORKDAYS 函数,SAP HANA 数据库中必须有一个工厂日历表 TFACS。在运行在 SAP HANA 数据库上的 SAP BW、SAP CRM 和 SAP ERP 系统中,表 TFACS 位于 ABAP 模式 SAP 中。对于其他 SAP HANA 数据库,可以从 SAP Business Suite 系统复制 TFACS 表。
当 为正时,计算出的日期是由 数量定义的期间后的下一个工作日。
当 为负时,计算出的日期是由 数量定义的期间前的上一个工作日。
2.CURRENT相关函数
SELECT
CURRENT_DATE, --当前日期
CURRENT_TIMESTAMP,--当前时间戳
CURRENT_MVCC_SNAPSHOT_TIMESTAMP(),--返回当前 MVCC 快照的时间戳,格式为 SSSS。
CURRENT_UTCDATE,--返回当前的 UTC 日期
CURRENT_UTCTIME,--返回当前的 UTC 时间
CURRENT_UTCTIMESTAMP,--返回当前的 UTC 时间戳
NOW()--当前时间戳
from dummy
3.提取日期的不同维度函数
函数 | 说明 |
---|---|
EXTRACT | 返回指定日期的请求部分 |
EXTRACT( {YEAR | MONTH | DAY | HOUR | MINUTE | SECOND} FROM <date> )select EXTRACT(DAY FROM CURRENT_DATE) FROM DUMMY --提取天数
select
current_timestamp ,
SECOND(current_timestamp) "SECOND",--返回指定时间的秒部分。
MINUTE(current_timestamp) "MINUTE",--返回指定时间的分钟的整数表示
HOUR(current_timestamp) "HOUR",--返回指定时间中小时部分的整数表示
DAYOFYEAR(current_timestamp) "DAYOFYEAR",--返回指定日期在一年中的天数的整数表示。
DAYOFMONTH(current_timestamp) "DAYOFMONTH",--返回指定日期的月份中的日期。
DAYNAME(current_timestamp) "DAYNAME",--返回指定日期的星期名
ISOWEEK(current_timestamp) "ISOWEEK",--返回指定日期的 ISO 年份和周数
WEEK(current_timestamp) "WEEK",--返回指定日期的周数,范围在1到54之间。
WEEKDAY(current_timestamp) "WEEKDAY",--返回指定日期的星期几
MONTH(current_timestamp) "MONTH",--返回指定日期的月份
MONTHNAME(current_timestamp) "MONTHNAME",--返回指定日期的月份名称
QUARTER(current_timestamp) "QUARTER",--返回指定日期的季度。
DAYOFYEAR(current_timestamp) "DAYOFYEAR",--返回指定日期在一年中的日期的整数表示
YEAR(current_timestamp) "YEAR"--返回指定日期的年份
from dummy
4.BETWEEN时间差相关函数
select
NANO100_BETWEEN(current_timestamp,ADD_NANO100(current_timestamp,864000000000)) "NANO100_BETWEEN",--计算两个日期之间的时间差,精确到0.1微秒。
SECONDS_BETWEEN(current_timestamp,ADD_SECONDS(current_timestamp,86400)) "SECONDS_BETWEEN",--计算两个指定日期之间的秒数。
DAYS_BETWEEN(to_date('2023-01-01'),current_date) "DAYS_BETWEEN",--计算两个日期之间的整天(24小时)数。
--WORKDAYS_BETWEEN 计算指定开始日期和结束日期之间的工作日数。
MONTHS_BETWEEN(to_date('2023-01-01'),current_date) "MONTHS_BETWEEN",--计算两个日期之间的月数。
YEARS_BETWEEN(to_date('2023-01-01'),current_date) "YEARS_BETWEEN"--计算两个指定日期之间的年数。
from dummy
5.其他时间函数
函数 | 说明 |
---|---|
LAST_DAY | 返回包含指定日期的月份的最后一天的日期。 |
NEXT_DAY | 返回指定日期的次日的日期。 |
select
LAST_DAY(CURRENT_DATE),--指定日期的月份的最后一天的日期
NEXT_DAY(CURRENT_DATE) --指定日期的月份的后一天的日期
from DUMMY
函数 | 说明 |
---|---|
LOCALTOUTC | 一个时间戳参数,用于在UTC和本地时间之间转换时间。 |
UTCTOLOCAL | 将指定的时间戳在UTC和本地时间之间转换。 |
select
UTCTOLOCAL (TO_TIMESTAMP('2012-01-01 01:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'EST') "utctolocal",
LOCALTOUTC (TO_TIMESTAMP('2012-01-01 01:00:00', 'YYYY-MM-DD HH24:MI:SS'), 'EST') "localtoutc"
from DUMMY