默认为STRING;
inceptor.udf.v2.enabled 开关开启时,返回DATE。
参数名 | 功能描述 | 默认值 |
---|---|---|
inceptor.udf.v2.enabled |
控制一些日期函数的新功能是否启用。为true时,表示启用新功能。具体的新功能请参考函数的详细信息。 |
false |
inceptor.date.show.time |
用于在*inceptor.udf.v2.enabled*开关开启时,控制日期类型的返回值是否显示时间部分。为false时,不显示日期类型的时间部分。此参数只可在hive_site.xml文件中修改。 |
true |
inceptor.support.english.date.format |
控制在日期函数中是否默认支持英文日期格式(即“dd-MMM-yy”、“dd-MMM-yy HH:mm:ss”、“dd-MMM-yyyy”、“dd-MMM-yyyy HH:mm:ss”、“yyyyMMdd”、“yyyyMMdd HH:mm:ss”)作为合法输入,为true时表示支持。在inceptor.udf.v2.enabled开关开启时,系统支持英文日期格式作为合法输入,忽略此参数设置。 |
true |
ADD_MONTHS
函数名 | 返回类型 | 描述 |
---|---|---|
ADD_MONTHS(<date>,<num_months>) |
默认为STRING; inceptor.udf.v2.enabled 开关开启时,返回DATE。 |
返回 <date> 加上 <num_months> 个月后的日期或时间。 |
说明
参数date应该是datetime value, 或者可以隐性转换成DATE类型;支持含有毫秒的日期STRING作为输入,如'2018-07-31 12:12:12.111'。默认情况下,参数num_months必须是INT类型或者可以隐式转化为INT的类型。
在inceptor.udf.v2.enabled开关开启时:
返回结果默认包含不为零的时间部分。如要不显示时间部分,需要在hive_site.xml文件中设置inceptor.date.show.time为false;
输入值中的毫秒级数会被保存在返回的DATE类型结果中,可以通过CAST AS TIMESTAMP提取;
参数date值超出合法日期范围时会返回NULL;
参数num_months支持所有数字类型和可以转化为INT的String类型。
此外,inceptor.udf.v2.enabled和*inceptor.support.english.date.format*中有一个为true时,参数date支持英文日期格式作为合法输入格式。
举例
SELECT ADD_MONTHS('201501',1) AS result FROM system.dual LIMIT 1;
复制
result |
---|
201502 |
SET inceptor.udf.v2.enabled=true; SELECT ADD_MONTHS('31-JUL-18 12:12:12.111',1) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2018-08-31 12:12:12 |
EXTRACT
函数名 | 返回类型 | 描述 |
---|---|---|
EXTRACT(DAY|MONTH|YEAR FROM <date>) |
STRING |
抽取日期类型中的年/月/日 |
说明
参数date应该是datetime value,或者可以隐性转换成DATE类型。
举例
SELECT EXTRACT(YEAR FROM '2015-01-15') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015 |
TO_UNIX_TIMESTAMP
函数名 | 返回类型 | 描述 |
---|---|---|
TO_UNIX_TIMESTAMP(<date>[, <pattern>]) |
BIGINT |
把日期格式转化为UNIX时间戳 |
说明
返回从 '1970-01-01 8:00:00' 开始,到指定时间为止的秒数。参数一最好是date类型,也支持其他字符类型;
参数二可选,作用是指定参数一的格式,如 'yyyy-MM-dd HH:mm:ss',如果参数二指定的格式和参数一不匹配,则返回 NULL。
举例
SELECT TO_UNIX_TIMESTAMP("2015-01-15",'yyyy-MM-dd') AS result FROM system.dual LIMIT 1;
复制
result |
---|
1421251200 |
UNIX_TIMESTAMP
函数名 | 返回类型 | 描述 |
---|---|---|
UNIX_TIMESTAMP([<date>[, <pattern>]]) |
BIGINT |
把日期格式转化为UNIX时间戳 |
说明
返回从 "1970-01-01 8:00:00" 开始,到指定时间为止的秒数。如果不加参数,则返回当前系统时间的UNIX时间戳。参数一最好是DATE类型,也支持其他字符类型; 参数二可选,作用是指定参数一的格式,如 'yyyy-MM-dd HH:mm:ss',如果参数二指定的格式和参数一不匹配,则返回NULL。
举例
SELECT UNIX_TIMESTAMP("2015-01-15",'yyyy-MM-dd') AS result FROM system.dual LIMIT 1;
复制
result |
---|
1421251200 |
TO_TIMESTAMP
函数名 | 返回类型 | 描述 |
---|---|---|
TO_TIMESTAMP([<date>[, <pattern>]]) |
BIGINT |
把日期格式转化为UNIX时间戳 |
说明
和UNIX_TIMESTAMP用法完全一致
举例
SELECT TO_TIMESTAMP("2015-01-15",'yyyy-MM-dd') AS result FROM system.dual LIMIT 1;
复制
result |
---|
1421251200 |
FROM_UNIXTIME
函数名 | 返回类型 | 描述 |
---|---|---|
FROM_UNIXTIME(<unix_time>[, <format>]) |
STRING |
把UNIX时间戳转化为时间格式 |
说明
参数一是LONG类型,或者可以隐性转换成LONG类型的UNIX时间戳;参数二可选,是字符类型,指定了返回的时间格式。当没有参数二时,返回标准的 'yyyy-MM-dd HH:mm:ss' 时间格式。
举例
SELECT FROM_UNIXTIME(0, 'yyyy-MM-dd HH:mm:ss') AS result FROM system.dual LIMIT 1;
复制
result |
---|
1970-01-01 08:00:00 |
TO_CHAR
函数名 | 返回类型 | 描述 |
---|---|---|
TO_CHAR(<date>[, <pattern>]) |
STRING |
把日期<date>转化为指定格式<pattern> |
说明
如果<date>是string类型,要求其格式必须为 yyyy-MM-dd HH:mm:ss 或者 yyyy-MM-dd。若<pattern>缺省,则以原形式返回。
举例
SELECT to_char('2011-05-11 10:00:12', 'yyyyMMdd') AS result FROM system.dual LIMIT 1;
复制
result |
---|
20110511 |
TO_DATE
函数名 | 返回类型 | 描述 |
---|---|---|
TO_DATE(<date>[, <pattern>]) |
默认为STRING; inceptor.udf.v2.enabled 开关开启时,返回DATE。 |
把字符串或者日期字符转化为 yyyy-MM-dd 的日期格式。 |
说明
参数date必须是字符类型或者是日期类型、TIMESTAMP类型,否则返回为NULL。支持含有毫秒的日期STRING作为输入,如'2018-07-31 12:12:12.111'。
在inceptor.udf.v2.enabled开关开启时:
返回结果默认包含不为零的时间部分。如要不显示时间部分,需要在hive_site.xml文件中设置inceptor.date.show.time为false;
输入值中的毫秒级数会被保存在返回的DATE类型结果中,可以通过CAST AS TIMESTAMP提取;
可以使用pattern参数指定输入的格式,如TO_DATE('23-JUL-2018','dd-MMM-yyyy');
参数date值超出合法日期范围时会返回NULL。
此外,inceptor.udf.v2.enabled或inceptor.support.english.date.format有一个为true时,参数date支持英文日期格式作为合法输入格式。
举例
SELECT TO_DATE('2015-01-15 04:17:52') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-01-15 |
SET inceptor.udf.v2.enabled=true; SELECT TO_DATE('23-JULY-18','dd-MMM-yy') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2018-07-23 |
TDH_TODATE
函数名 | 返回类型 | 描述 |
---|---|---|
TDH_TODATE(<date>[, <originalformat>,<targetformat>]) |
STRING |
把字符按照给定的格式,转化为标准日期格式,或者指定格式 |
说明
参数date必须是字符类型或者是日期类型、TIMESTAMP类型,否则返回为 NULL。如果只提供日期一个参数,系统会自动识别 yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd 格式的字符或日期,然后返回 yyyy-MM-dd 格式的字符串,其他返回 NULL。
当指定了 originalformat (参数一的原始日期格式)时,会根据指定的格式去解析日期,如果格式和日期参数不匹配也返回 NULL,建议手动指定 originalformat。
参数 targetformat 也是STRING类型,指定返回的日期格式,如 yyyy*MM*dd。
三个参数 date、originalformat 和 targetformat 都可以包含时分秒。但是 originalformat 和 targetformat 缺省的情况下,tdh_todate 只返回 yyyy-MM-dd 格式的年月日。所以要转换包含时分秒信息的日期必须指定 original format 和*targetformat*。时分秒的格式为 HH:mm:ss.SS(24小时制)或者 hh:mm:ss.SS(12小时制)。
inceptor.udf.compatible.with.oracle 参数来控制兼容性。当此开关为 true 时,可以识别非法日期和英文日期,例如 TDH_TODATE("2018-02-31") 会返回 NULL,TDH_TODATE("25-MAR-18") 则会返回 "2018-03-25"。
举例
SELECT TDH_TODATE('2015-01-15 00:00:00') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-01-15 |
SELECT TDH_TODATE('2015-11-24 18:00:00','yyyy-MM-dd HH:mm:ss','yyyy/MM/dd hh:mm:ss') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015/11/24 06:00:00 |
DAY
函数名 | 返回类型 | 描述 |
---|---|---|
DAY(<date>) |
INT |
返回指定时间是该月的第几天 |
说明
参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为 NULL。另外date必须是 yyyy-MM-dd 或者 yyyy-MM-dd HH:MM:SS 的格式,否则也返回NULL。
举例
SELECT DAY('2015-01-15') AS result FROM system.dual LIMIT 1;
复制
result |
---|
15 |
DAYOFMONTH
函数名 | 返回类型 | 描述 |
---|---|---|
DAYOFMONTH(<date>) |
INT |
返回指定时间是该月的第几天 |
说明
用法和函数DAY完全一致。
举例
SELECT DAYOFMONTH('2015-01-15') AS result FROM system.dual LIMIT 1;
复制
result |
---|
15 |
DAYOFYEAR
函数名 | 返回类型 | 描述 |
---|---|---|
DAYOFYEAR(<date>[,<format>]) |
INT |
返回指定日期是该年的第几天 |
说明
参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。如果只提供日期一个参数,系统会自动识别 yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd 三种格式的字符或日期,然后返回日期是该年的第几天,其他格式返回NULL。当指定了第二个可选参数(STRING类型的日期格式)时,会根据指定的格式去解析日期,如果格式和日期参数不匹配也返回NULL,建议手动指定第二个参数。
举例
SELECT DAYOFYEAR('2015|01|15','yyyy|MM|dd') AS result FROM system.dual LIMIT 1;
复制
result |
---|
15 |
QUARTER
函数名 | 返回类型 | 描述 |
---|---|---|
QUARTER(<date>[,<format>]) |
INT |
返回指定日期是该年的第几季度 |
说明
参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。如果只提供日期一个参数,系统会自动识别yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd三种格式的字符或日期,然后返回日期是该年的第几季度,其他格式返回NULL。当指定了第二个可选参数(String类型的日期格式)时,会根据指定的格式去解析日期,如果格式和日期参数不匹配也返回NULL,建议手动指定第二个参数。
举例
SELECT QUARTER('2015|06|15','yyyy|MM|dd') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2 |
HOUR
函数名 | 返回类型 | 描述 |
---|---|---|
HOUR(<date>) |
INT |
返回指定时间是该日的第几个小时 |
说明
参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。
举例
SELECT HOUR('2015-01-30 22:58:59') AS result FROM system.dual LIMIT 1;
复制
result |
---|
22 |
MINUTE
函数名 | 返回类型 | 描述 |
---|---|---|
MINUTE(<date>) |
INT |
返回指定时间是该小时的第多少分钟 |
说明
参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。
举例
SELECT MINUTE('2015-01-30 22:58:59') AS result FROM system.dual LIMIT 1;
复制
result |
---|
58 |
SECOND
函数名 | 返回类型 | 描述 |
---|---|---|
SECOND(<time>) |
INT |
返回指定时间是该分钟的第多少秒 |
说明
参数date必须必须是yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。
举例
SELECT SECOND('2015-01-30 22:58:59') AS result FROM system.dual LIMIT 1;
复制
result |
---|
59 |
WEEKOFYEAR
函数名 | 返回类型 | 描述 |
---|---|---|
WEEKOFYEAR(<date>) |
INT |
返回指定日期是该年的第几周 |
说明
参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。我们把周一作为一周的开始,同时第一个有着4天及以上的周,是第一周。
举例
SELECT WEEKOFYEAR('2015-01-15 22:58:59') AS result FROM system.dual LIMIT 1;
复制
result |
---|
3 |
DATEDIFF
函数名 | 返回类型 | 描述 |
---|---|---|
DATEDIFF(<date1>, <date2>) |
INT |
返回两个日期的相差天数 |
说明
参数 date1/date2 必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。支持含有毫秒的日期STRING作为输入,如'2018-07-31 12:12:12.111'。返回值为正说明date1较晚。
在inceptor.udf.v2.enabled开关开启时:
输入值中的毫秒级数会被保存在返回的DATE类型结果中,可以通过CAST AS TIMESTAMP提取;
输入值为非法日期时会返回NULL;
日期中的时间部分也会进行计算,得出的结果不足一天的结果计为0天。
此外,inceptor.udf.v2.enabled和*inceptor.support.english.date.format*中有一个为true时,参数支持英文日期格式作为合法输入格式。
举例
SELECT DATEDIFF('2015-01-15', '2015-02-08') AS result FROM system.dual LIMIT 1;
复制
result |
---|
-24 |
SET inceptor.udf.v2.enabled=true; SELECT DATEDIFF('30-JUL-18 12:12:12.111','20180731 12:12:10') AS result FROM system.dual LIMIT 1;
复制
result |
---|
0 |
DATE_ADD
函数名 | 返回类型 | 描述 |
---|---|---|
DATE_ADD(<start_date>, <num_days>) |
默认为STRING; inceptor.udf.v2.enabled 开关开启时,返回DATE。 |
返回指定时间之后的第num_days天的日期或时间 |
说明
参数start_date必须是字符类型或者是日期类型、Timestamp类型,同时必须是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。支持含有毫秒的日期STRING作为输入,如'2018-07-31 12:12:12.111'。默认情况下,参数num_days必须是Int类型或者可以隐式转化为Int的类型。
在inceptor.udf.v2.enabled开关开启时:
返回结果默认包含不为零的时间部分。如要不显示时间部分,需要在hive_site.xml文件中设置inceptor.date.show.time为false;
输入值中的毫秒级数会被保存在返回的DATE类型结果中,可以通过CAST AS TIMESTAMP提取;
参数start_date值超出合法日期范围时会返回NULL;
参数num_days支持所有数字类型和可以转化为INT的String类型。
此外,inceptor.udf.v2.enabled和*inceptor.support.english.date.format*中有一个为true时,参数start_date支持英文日期格式作为合法输入格式。
举例
SELECT DATE_ADD('2015-01-15', 1) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-01-16 |
SET inceptor.udf.v2.enabled=true; SELECT DATE_ADD('2018-07-31 12:12:12.111',1) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2018-08-01 12:12:12 |
DATE_SUB
函数名 | 返回类型 | 描述 |
---|---|---|
DATE_SUB(<start_date>, <num_days>) |
默认为STRING; inceptor.udf.v2.enabled 开关开启时,返回DATE。 |
返回指定时间之前的第num_days天的时间 |
说明
参数start_date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。支持含有毫秒的日期STRING作为输入,如'2018-07-31 12:12:12.111'。默认情况下,参数num_days必须是Int类型或者可以隐式转化为Int的类型。
在inceptor.udf.v2.enabled开关开启时:
返回结果默认包含不为零的时间部分。如要不显示时间部分,需要在hive_site.xml文件中设置inceptor.date.show.time为false;
输入值中的毫秒级数会被保存在返回的DATE类型结果中,可以通过CAST AS TIMESTAMP提取;
参数start_date值超出合法日期范围时会返回NULL;
参数num_days支持所有数字类型和可以转化为INT的String类型。
此外,inceptor.udf.v2.enabled和*inceptor.support.english.date.format*中有一个为true时,参数start_date支持英文日期格式作为合法输入格式。
举例
SELECT DATE_SUB('2015-01-15', 1) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-01-14 |
SET inceptor.udf.v2.enabled=true; SELECT DATE_SUB('2018-07-31 12:12:12.111',1) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2018-07-30 12:12:12 |
DATE_FORMAT
函数名 | 返回类型 | 描述 |
---|---|---|
DATE_FORMAT(<date>, <pattern>) |
STRING |
把时间转化为指定的格式 |
说明
参数date必须是’yyyy-MM-dd HH:mm:ss’的字符或者Date、Timestamp格式,否则返回值为NULL;参数二必须是字符格式,指定了返回日期的格式。
举例
SELECT DATE_FORMAT('2015-01-15 00:00:00','yyyyMMdd') AS result FROM system.dual LIMIT 1;
复制
result |
---|
20150115 |
STR_TO_DATE
函数名 | 返回类型 | 描述 |
---|---|---|
STR_TO_DATE(<date>, <format>) |
DATE |
根据指定的格式来解析日期并转化为标准格式 |
说明
参数date必须是字符或者Date、Timestamp格式,否则返回值为NULL;参数二必须是字符格式,指定了dateText的日期格式。最后返回的是标准的 'yyyy-MM-dd' 格式的日期。
举例
SELECT STR_TO_DATE('2015|01|15','yyyy|MM|dd') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-01-15 |
SYSDATE
函数名 | 返回类型 | 描述 |
---|---|---|
SYSDATE |
DATE |
返回当前系统时间 |
说明
返回的时间是 'yyyy-MM-dd HH:mm:ss' 格式。注意使用时函数后没有括号。
举例
SELECT SYSDATE AS result FROM system.dual LIMIT 1;
复制
result |
---|
2018-09-10 19:54:23 |
DAYOFWEEK
函数 | 返回类型 | 描述 |
---|---|---|
DAYOFWEEK(<date>) |
INT |
参数须是DATE类型,形式必须为:'yyyy-MM-dd HH:mm:ss' 或者 'yyyy-MM-dd'。返回日期在一周中是第几天(将周日算作第一天)。 |
SELECT DAYOFWEEK('2016-03-03') AS result FROM system.dual LIMIT 1;
复制
result |
---|
5 |
DAYOFWEEK_ISO
函数 | 返回类型 | 描述 |
---|---|---|
DAYOFWEEK_ISO(<date>) |
INT |
参数须是DATE类型,形式必须为:'yyyy-MM-dd HH:mm:ss' 或者 'yyyy-MM-dd'。返回日期在一周中是第几天(将周一算作第一天)。 |
SELECT DAYOFWEEK_ISO('2016-03-03') AS result FROM system.dual LIMIT 1;
复制
result |
---|
4 |
MILLISECOND
函数 | 返回类型 | 描述 |
---|---|---|
MILLISECOND(<date>) |
INT |
参数须是DATE类型,形式必须为 'yyyy-MM-dd HH:mm:ss.xxx' 或者 'HH:mm:ss.xxx'。返回参数中小数点后精确到毫秒的部分。小数点后最多能有三位数。 |
SELECT MILLISECOND('2009-07-30 12:58:59.847') AS result FROM system.dual LIMIT 1;
复制
result |
---|
847 |
SELECT MILLISECOND('12:58:59.213') AS result FROM system.dual LIMIT 1;
复制
result |
---|
213 |
MONTHS_BETWEEN
函数 | 返回类型 | 描述 |
---|---|---|
MONTHS_BETWEEN (<end_date>, <start_date>) |
DOUBLE |
需要两个DATE类型的参数。返回以 <end_date> 结束,<start_date> 开始的一段时间中的月数。参数的形式必须为*'yyyyMM','yyyy-MM-dd HH:mm:ss'* 或者 'yyyy-MM-dd'。如果 <end_date> 在 <start_date> 之前,返回负值。 |
SELECT MONTHS_BETWEEN('2011-01-01','2010-10-15') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2.5483871 |
SELECT MONTHS_BETWEEN('2010-10-15','2011-01-01') AS result FROM system.dual LIMIT 1;
复制
result |
---|
-2.5483871 |
LAST_DAY
函数 | 返回类型 | 描述 |
---|---|---|
LAST_DAY(<date>) |
DATE |
必须有一个DATE类型的参数,参数形式必须为:yyyy-MM-dd HH:mm:ss, yyyy-MM-dd, 或者*yyyyMM*。返回参数所在月的最后一天的日期。 |
SELECT LAST_DAY('2003-03-15 01:22:33') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2003-03-31 |
DAYS
函数 | 返回类型 | 描述 |
---|---|---|
DAYS(<date>) |
INT |
需要一个DATE类型的参数 <date>,参数形式必须为 yyyy-MM-dd, yyyy-MM-dd HH:mm:ss 类型的日期。返回 <date> 和 0001-01-02 之间的天数。 |
SELECT DAYS('2016-03-05') AS result FROM system.dual LIMIT 1;
复制
result |
---|
736028 |
TO_DAY_INTERVAL
函数 | 返回类型 | 描述 |
---|---|---|
TO_DAY_INTERVAL(<number>) |
INTERVAL DAY |
将参数转换成一个INTERVAL DAY类型返回。 |
SELECT DATE('2015-01-01') + TO_DAY_INTERVAL(2) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-01-03 00:00:00.0 |
TO_MONTH_INTERVAL
函数 | 返回类型 | 描述 |
---|---|---|
TO_MONTH_INTERVAL(<number>) |
INTERVAL MONTH |
将参数转换成一个INTERVAL MONTH类型返回。 |
SELECT DATE('2015-01-01') + TO_MONTH_INTERVAL(2) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-03-01 |
TO_YEAR_INTERVAL
函数 | 返回类型 | 描述 |
---|---|---|
TO_YEAR_INTERVAL(<number>) |
INTERVAL YEAR |
将参数转换成一个INTERVAL YEAR类型返回。 |
SELECT DATE('2015-01-01') + TO_YEAR_INTERVAL(2) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2017-01-01 |
TO_HOUR_INTERVAL
函数 | 返回类型 | 描述 |
---|---|---|
TO_HOUR_INTERVAL(<number>) |
INTERVAL HOUR |
将参数转换成一个INTERVAL HOUR类型返回。 |
SELECT DATE('2015-01-01') + TO_HOUR_INTERVAL(2) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-01-01 02:00:00.0 |
TO_MINUTE_INTERVAL
函数 | 返回类型 | 描述 |
---|---|---|
TO_MINUTE_INTERVAL(<number>) |
INTERVAL MINUTE |
将参数转换成一个INTERVAL MINUTE类型返回。 |
SELECT DATE('2015-01-01') + TO_MINUTE_INTERVAL(2) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-01-01 00:02:00.0 |
TO_SECOND_INTERVAL
函数 | 返回类型 | 描述 |
---|---|---|
TO_SECOND_INTERVAL(<number>) |
INTERVAL SECOND |
将参数转换成一个INTERVAL SECOND类型返回。 |
SELECT DATE('2015-01-01') + TO_SECOND_INTERVAL(2) AS result FROM system.dual LIMIT 1;
复制
result |
---|
2015-01-01 00:00:02.0 |
TD_INT_TO_TIME
函数 | 返回类型 | 描述 |
---|---|---|
TD_INT_TO_TIME(<HHmmss>) |
见描述 |
参数 <HHmmss> 必须是一个六位整数。将参数转换为时间返回。 |
SELECT TD_INT_TO_TIME(123456) AS result FROM system.dual LIMIT 1;
复制
result |
---|
12:34:56 |
SYSTIMESTAMP
函数 | 返回类型 | 描述 |
---|---|---|
SYSTIMESTAMP |
TIMESTAMP |
返回当前系统TIMESTAMP。和 current_timestamp 同义。注意,*systimestamp 使用时后面不加括号。* |
SELECT SYSTIMESTAMP AS result FROM system.dual LIMIT 1;
复制
result |
---|
2018-09-10 19:54:24.132 |
TRUNC
函数 | 返回类型 | 描述 |
---|---|---|
TRUNC(<date>, <unit>) |
DATE |
返回给定日期 date 在指定单位 unit 内的开始值。例如,如果 unit 是 MONTH,则返回给定日期所在月的第一天。 |
说明
参数*unit*为日期单位,可以是:世纪(CC)、年(YEAR/YYYY/YY)、季度(Q)、月(MONTH/MON/MM)、日(DAY/D/DY)、时(HH)和分(MI)。参数*date*为日期,支持含有毫秒的值,如TRUNC('2018-07-31 12:12:12.111','DAY')。
在inceptor.udf.v2.enabled开关开启时:
返回结果默认包含不为零的时间部分。如要不显示时间部分,需要在hive_site.xml文件中设置inceptor.date.show.time为false;
输入值中的毫秒级数会被保存在返回的DATE类型结果中,可以通过CAST AS TIMESTAMP提取;
参数*date*值超出合法日期范围时会返回NULL。
此外,inceptor.udf.v2.enabled和*inceptor.support.english.date.format*中有一个为true时,参数*date*支持英文日期格式作为合法输入格式。
SELECT TRUNC('2016-10-22 11:22:33','YYYY') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2016-01-01 |
SELECT TRUNC('2016-10-22 11:22:33','MM') AS result FROM system.dual LIMIT 1;
复制
result |
---|
2016-10-01 |
NEXT_DAY
函数 | 返回类型 | 描述 |
---|---|---|
NEXT_DAY(<date>, '<dayofweek>') |
DATE |
需要两个参数:一个日期 <date> 和周中的一天 <dayofweek>(例如“星期天”、“Sunday”)。返回从 <date> 开始第一个 <dayofweek> 的日期。 |
下面例子返回 2015-12-25后的第一个星期天。
SELECT NEXT_DAY('2015-12-25','星期天') AS result FROM system.dual LIMIT 1
复制
result |
---|
2015-12-27 |
FROM_UTC_TIMESTAMP
函数 | 返回类型 | 描述 |
---|---|---|
FROM_UTC_TIMESTAMP(<date>, <timezone>) |
DATE |
需要两个参数:日期 <date> 和目标时区 <timezone>。该函数将 <date> 当做UTC时区的时间, 转化成 <timezone> 时区中的时间。 |
SELECT FROM_UTC_TIMESTAMP('1970-01-01 08:00:00','PST') AS result FROM system.dual LIMIT 1;
复制
result |
---|
1970-01-01 00:00:00.0 |
TO_UTC_TIMESTAMP
函数 | 返回类型 | 描述 |
---|---|---|
TO_UTC_TIMESTAMP(<date>, <timezone>) |
DATE |
需要两个参数:日期 <date> 和目标时区 <timezone>。该函数将 <date> 当做 <timezone> 时区的时间, 转化成UTC时区中的时间。 |
SELECT TO_UTC_TIMESTAMP('1970-01-01 00:00:00.0', 'PST') AS result FROM system.dual LIMIT 1;
复制
result |
---|
1970-01-01 08:00:00.0 |
numtoyminterval
函数 | 返回类型 | 描述 |
---|---|---|
numtoyminterval(interval_number, year|month) |
year-month |
将<interval_number>转换为year-month interval类型。 |
SELECT numtoyminterval(12, 'month') AS RESULT FROM system.dual LIMIT 1;
复制
result |
---|
1 |
numtodsinterval
函数 | 返回类型 | 描述 |
---|---|---|
numtodsinterval(interval_number, day|hour|minute|second) |
day-time |
将<interval_number>转换为day-time interval类型。 |
SELECT numtodsinterval(1, 'day') AS RESULT FROM system.dual;
复制
result |
---|
1 |