testbook

日期函数

add_months, extract, from_unixtime, to_unix_timestamp, unix_timestamp, to_timestamp, to_date, tdh_todate, day, dayofmonth, dayofyear, quater, hour, minute, second, weekofyear, datediff, date_add, date_sub, date_format, str_to_date, sysdate
函数名返回类型描述
add_months(date,integer) String 返回date加上integer个月后的日期。
说明:
       参数date应该是datetime value,或者可以隐性转换成DATE类型;参数integer应该是整数型,或者可以隐形转换成整数型。

举例:
SELECT add_months('201501',1) FROM src LIMIT 1;
Result: 201502


函数名返回类型描述
extract(date,integer) String 抽取日期类型中的年/月/日
说明:
       参数date应该是datetime value,或者可以隐性转换成DATE类型;参数integer应该是整数型,或者可以隐形转换成整数型。

举例:
SELECT EXTRACT(year from '2015-01-15') FROM src LIMIT 1;
Result: 2015


函数名返回类型描述
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') from src limit 1;
Result: 1421251200


函数名返回类型描述
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') from src limit 1;
Result: 1421251200


函数名返回类型描述
to_timestamp([date[, pattern]]) BigInt 把日期格式转化为UNIX时间戳
说明:
       和unix_timestamp用法完全一致

举例:
select to_timestamp("2015-01-15",'yyyy-MM-dd') from src limit 1;
Result: 1421251200


函数名返回类型描述
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') FROM src LIMIT 1;
Result: 1970-01-01 08:00:00


函数名返回类型描述
to_date(date) String 把字符串或者日期字符转化为yyyy-MM-dd的日期格式
说明:
       参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。

举例:
SELECT to_date('2015-01-15 04:17:52') FROM src LIMIT 1;
Result: 2015-01-15


函数名返回类型描述
tdh_todate(date[,originformat,targetformat]) String 把字符按照给定的格式,转化为标准日期格式,或者指定格式
说明:
       参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。如果只提供日期一个参数,系统会自动识别yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd格式的字符或日期,然后返回yyyyMMdd格式的日期字符,其他返回NULL。当指定了第二个可选参数(String类型的原始日期格式)时,会根据指定的格式去解析日期,如果格式和日期参数不匹配也返回NULL,建议手动指定第二个参数。第三个可选参数也是String类型,指定返回的日期格式,如yyyy*MM*dd。

举例:
SELECT EXTRACT(year from '2015-01-15') FROM src LIMIT 1;
Result: 2015


函数名返回类型描述
day(date) Int 返回指定时间是该月的第几天
说明:
       参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。另外date必须是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则也返回NULL。

举例:
SELECT day('2015-01-15') FROM src LIMIT 1;
Result: 15


函数名返回类型描述
dayofmonth(date) Int 返回指定时间是该月的第几天
说明:
       用法和函数day完全一致。

举例:
SELECT dayofmonth('2015-01-15') FROM src LIMIT 1;
Result: 15


函数名返回类型描述
dayofyear(date[,formatt]) Int 返回指定日期是该年的第几天
说明:
       参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。如果只提供日期一个参数,系统会自动识别yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd三种格式的字符或日期,然后返回日期是该年的第几天,其他格式返回NULL。当指定了第二个可选参数(String类型的日期格式)时,会根据指定的格式去解析日期,如果格式和日期参数不匹配也返回NULL,建议手动指定第二个参数。

举例:
SELECT dayofyear('2015|01|15','yyyy|MM|dd') FROM src LIMIT 1;
Result: 166


函数名返回类型描述
quater(date[,formatt]) Int 返回指定日期是该年的第几季度
说明:
       参数date必须是字符类型或者是日期类型、Timestamp类型,否则返回为NULL。如果只提供日期一个参数,系统会自动识别yyyyMMdd、yyyy-MM-dd、yyyy/MM/dd三种格式的字符或日期,然后返回日期是该年的第几季度,其他格式返回NULL。当指定了第二个可选参数(String类型的日期格式)时,会根据指定的格式去解析日期,如果格式和日期参数不匹配也返回NULL,建议手动指定第二个参数。

举例:
SELECT quater('2015|06|15','yyyy|MM|dd') FROM src LIMIT 1;
Result: 2


函数名返回类型描述
hour(date) Int 返回指定时间是该日的第几个小时
说明:
       参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。

举例:
SELECT hour('2015-01-30 22:58:59') FROM src LIMIT 1;
Result: 22


函数名返回类型描述
minute(date) Int 返回指定时间是该小时的第多少分钟
说明:
       参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。

举例:
SELECT minute('2015-01-30 22:58:59') FROM src LIMIT 1;
Result: 58


函数名返回类型描述
second(date) Int 返回指定时间是该分钟的第多少秒
说明:
       参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。

举例:
SELECT second('2015-01-30 22:58:59') FROM src LIMIT 1;
Result: 59


函数名返回类型描述
weekofyear(date) Int 返回指定日期是该年的第几周
说明:
       参数date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。我们把周一作为一周的开始,同时第一个有着4天及以上的周,是第一周。

举例:
SELECT weekofyear('2015-01-15 22:58:59') FROM src LIMIT 1;
Result: 3


函数名返回类型描述
datediff(date1, date2) Int 返回两个日期的相差天数
说明:
       参数date1/date2必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。返回值为正说明date1较晚。

举例:
SELECT datediff('2015-01-15', '2015-02-08') FROM src LIMIT 1;
Result: -24


函数名返回类型描述
date_add(start_date, num_days) Int 返回指定时间之后的第num_days天的时间
说明:
       参数start_date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。参数num_days必须是Int类型或者可以隐式转化为Int类型

举例:
SELECT date_add('2015-01-15', 1) FROM src LIMIT 1;
Result: 2015-01-16


函数名返回类型描述
date_sub(start_date, num_days) Int 返回指定时间之前的第num_days天的时间
说明:
       参数start_date必须是字符类型或者是日期类型、Timestamp类型,同时必须是是yyyy-MM-dd或者yyyy-MM-dd HH:MM:SS的格式,否则返回NULL。参数num_days必须是Int类型或者可以隐式转化为Int类型

举例:
SELECT date_sub('2015-01-15', 1) FROM src LIMIT 1;
Result: 2015-01-14


函数名返回类型描述
date_format(dateText,pattern) DATE 把时间转化为指定的格式
说明:
       参数date必须是'yyyy-MM-dd HH:mm:ss'的字符或者Date、Timestamp格式,否则返回值为NULL;参数二必须是字符格式,指定了返回日期的格式。

举例:
select date_format('2015-01-15 00:00:00','yyyyMMdd') from src limit 1;
Result: 20150115


函数名返回类型描述
str_to_date(dateText,pattern) String 根据指定的格式来解析日期并转化为标准格式
说明:
       参数date必须是字符或者Date、Timestamp格式,否则返回值为NULL;参数二必须是字符格式,指定了dateText的日期格式。最后返回的是标准的'yyyy-MM-dd HH:mm:ss'格式的时间。

举例:
select str_to_date('2015|01|15','yyyy|MM|dd') from src limit 1;
Result: 2015-01-15 00:00:00


函数名返回类型描述
sysdate String 返回当前系统时间
说明:
       返回的时间是'yyyy-MM-dd HH:mm:ss'格式

举例:
SELECT EXTRACT(year from '2009-30-07') FROM src LIMIT 1;
Result: 2009