DATE_TRUNC¶
说明¶
给定一个日期,截断成指定的精度。
参数¶
field
field域指出了需要截断到哪个子域的精度,比如可以是day, hour等等
date_expression
此参数的类型可以是timestamp、timestamp with time zone、interval year to month、interval day to second类型的时间表达式。
返回值¶
返回值与date_expression具有相同的数据类型。
注解
filed域所支持的域名取决于输入的expression的数据类型,具体对应关系如下:
当expression是timestamp和timestamp with time zone类型时,DATE_TRUNC支持的域名有:
MILLENNIUM 千年域,精确到年域的千年部分,第三个千年是从2001年1月1日始至3000年12月31日止。
CENTURY 世纪域,精确到年域的世纪部分,21世纪是从2001年1月1日始至2100年12月31日止。
DECADE 十年域,精确到年域的十年部分,第199个十年是从1990年1月1日始至1999年12月31日止。
YEAR (Y) 年份域,精确到年域。
QUARTER (Q) 季度域,精确到季度。
MONTH (M) 月份域,精确到月份域。
WEEK (W) 月份域,精确到周,以星期日作为每周的开始。
DAY (D) 日期域,精确到日期。
HOUR (H) 小时域,精确到小时。
MINUTE (M) 分钟域,精确到分钟。
SECOND (S) 秒域,精确到秒域的整数部分。
MILLISECONDS (MS) 秒域,精确到秒域的毫秒部分。
MICROSECONDS (MCS) 秒域,精确到秒域的微秒部分。
当expression是interval year to month类型时,DATE_ TRUNC支持的域名有:
MILLENNIUM 千年域,精确到年域的千年部分。
CENTURY 百年域,精确到年域的百年部分。
DECADE 十年域,精确到年域的十年部分。
YEAR (Y) 年份域,精确到年域。
MONTH (M) 月份域,精确到月份域。
当expression是interval day to second类型时,DATE_ TRUNC支持的域名有:
DAY (D) 日期域,精确到日期域。
HOUR (H) 小时域,精确到小时域。
MINUTE (M) 分钟域,精确到分钟域。
SECOND (S) 秒域,精确到秒域的整数部分。
MILLISECONDS (MS) 秒域,精确到秒域的毫秒部分。
MICROSECONDS (MCS) 秒域,精确到秒域的微秒部分。
示例¶
示例1: 截断时间
-- 截断时间
SELECT DATE_TRUNC('HOUR', TIMESTAMP '2001-02-16 20:38:40');
DATE_TRUNC(timestamp) |
---------------------------
2001-02-16 20:00:00 |
总数目:1
SELECT DATE_TRUNC('Y', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-01-01 00:00:00 |
总数目:1
SELECT DATE_TRUNC('YEAR', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-01-01 00:00:00 |
总数目:1
SELECT DATE_TRUNC('MON', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-01 00:00:00 |
总数目:1
SELECT DATE_TRUNC('MONTH', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-01 00:00:00 |
总数目:1
SELECT DATE_TRUNC('D', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-16 00:00:00 |
总数目:1
SELECT DATE_TRUNC('DAY', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-16 00:00:00 |
总数目:1
SELECT DATE_TRUNC('H', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-16 12:00:00 |
总数目:1
SELECT DATE_TRUNC('HOUR', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-16 12:00:00 |
总数目:1
SELECT DATE_TRUNC('M', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-16 12:34:00 |
总数目:1
SELECT DATE_TRUNC('MINUTE', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-16 12:34:00 |
总数目:1
SELECT DATE_TRUNC('S', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-16 12:34:56 |
总数目:1
SELECT DATE_TRUNC('SECOND', TIMESTAMP '2011-02-16 12:34:56.78');
DATE_TRUNC(timestamp) |
---------------------------
2011-02-16 12:34:56 |
总数目:1