tencent cloud

文档反馈

日期时间函数

最后更新时间:2024-08-07 17:32:11

    DATE

    函数语法:
    DATE(<expr> date|timestamp|string)
    支持引擎:SparkSQL、Presto 。
    使用说明:强制类型转换为 date 。
    返回类型:date 。
    示例:
    > select date('2022-02-02');
    2022-02-02

    TIMESTAMP

    函数语法:
    TIMESTAMP(<expr> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:强制类型转换为 timestamp。
    返回类型:timestamp。
    示例:
    > select timestamp('2022-02-02 11:11:11');
    2022-02-02 11:11:11

    ADD_MONTHS

    函数语法:
    ADD_MONTHS(<start_date> date|timestamp|string, <num> integer)
    支持引擎:SparkSQL、Presto。
    使用说明:返回 start_date 之后的 num 个月的日期。
    返回类型:date。
    示例:
    > SELECT add_months('2016-08-31', 1);
    2016-09-30

    CURRENT_DATE

    函数语法:
    CURRENT_DATE
    支持引擎:SparkSQL、Presto。
    使用说明:返回查询计算开始时的当前日期。
    返回类型:date。
    示例:
    > SELECT CURRENT_DATE;
    2022-07-27

    CURRENT_TIMESTAMP

    函数语法:
    CURRENT_TIMESTAMP
    支持引擎:SparkSQL、Presto。
    使用说明:返回查询计算开始时的当前时间戳。
    返回类型:timestamp。
    示例:
    > SELECT CURRENT_TIMESTAMP;
    2022-07-27 18:06:00.632

    CURRENT_TIMEZONE

    函数语法:
    CURRENT_TIMEZONE(
    支持引擎:SparkSQL、Presto。
    使用说明:返回当前会话本地时区。
    返回类型:string。
    示例:
    > select CURRENT_TIMEZONE();
    Asia/Shanghai

    DATEDIFF

    函数语法:
    DATEDIFF(<end> date|timestamp|string, <start> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回从 start 到 end 的天数。
    返回类型:integer。
    示例:
    > SELECT datediff('2009-07-31', '2009-07-30');
    1
    > SELECT datediff('2009-07-30', '2009-07-31');
    -1

    DATE_ADD

    函数语法:
    DATE_ADD(<start_dates> date|timestamp|string, <num> integer)
    支持引擎:SparkSQL、Presto。
    使用说明:返回 start_date 后 num 天的日期。
    返回类型:date。
    示例:
    > SELECT date_add('2016-07-30', 1);
    2016-07-31

    DATE_FORMAT

    函数语法:
    DATE_FORMAT(<ts> date|timestamp|string, <format> string)
    支持引擎:SparkSQL、Presto。
    使用说明:将时间戳转换指定日期格式 format 的字符串值。
    返回类型:string。
    示例:
    > SELECT date_format('2016-04-08', 'y');
    2016

    DATE_SUB

    函数语法:
    DATE_SUB(<start_date> date|timestamp|string, <num> integer)
    支持引擎:SparkSQL、Presto。
    使用说明:返回 start_date 前 num 天的日期。
    返回类型:date。
    示例:
    > SELECT date_sub('2016-07-30', 1);
    2016-07-29

    DAY

    函数语法:
    DAY(<d> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:计算日期/时间戳 d 是这个月的第几天。
    返回类型:integer。
    示例:
    > SELECT day('2009-07-30');
    30

    DAYOFYEAR

    函数语法:
    DAYOFYEAR(<d> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:计算 d 是这年的第几天。
    返回类型:integer。
    示例:
    > SELECT dayofyear('2016-04-09');
    100

    DAYOFMONTH

    函数语法:
    DAYOFMONTH
    支持引擎:SparkSQL、Presto。
    使用说明:计算日期/时间戳 d 是这个月的第几天。
    返回类型:integer。
    示例:
    > SELECT dayofmonth('2009-07-30');
    30

    FROM_UNIXTIME

    函数语法:
    FROM_UNIXTIME(<unix_time> bigint[, <fmt> string])
    支持引擎:SparkSQL、Presto。
    使用说明:以格式 fmt 返回 unix_time 所代表的日期/时间。如果省略 fmt,则使用 'yyyy-MM-dd HH:mm:ss'。
    返回类型:string。
    示例:
    > SELECT from_unixtime(0, 'yyyy-MM-dd HH:mm:ss');
    1969-12-31 16:00:00
    > SELECT from_unixtime(0);
    1969-12-31 16:00:00

    FROM_UTC_TIMESTAMP

    函数语法:
    FROM_UTC_TIMESTAMP(<ts> timestamp, <timezone> string)
    支持引擎:SparkSQL、Presto。
    使用说明:给定 utc 时间戳并将该时间呈现为给定时区的时间戳。
    返回类型:timestamp。
    示例:
    > SELECT from_utc_timestamp('2016-08-31', 'Asia/Seoul');
    2016-08-31 09:00:00

    HOUR

    函数语法:
    HOUR(<ts> string|timestamp)
    支持引擎:SparkSQL、Presto。
    使用说明:返回指定时间戳 ts 的小时部分。
    返回类型:integer。
    示例:
    > SELECT hour('2009-07-30 12:58:59');
    12

    LAST_DAY

    函数语法:
    LAST_DAY(<d> date|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回日期 d 当前这个月的最后一天。
    返回类型:date。
    示例:
    > SELECT last_day('2009-01-12');
    2009-01-31

    MINUTE

    函数语法:
    MINUTE(<ts> timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回时间戳 ts 的分钟。
    返回类型:integer。
    示例:
    > SELECT minute('2009-07-30 12:58:59');
    58

    MONTH

    函数语法:
    MONTH(<d> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回日期 d 的月份。
    返回类型:integer。
    示例:
    > SELECT month('2016-07-30');
    7

    MONTHS_BETWEEN

    函数语法:
    MONTHS_BETWEEN(<ts1> date|timestamp|string, <ts2> date|timestamp|string, <roundOff> boolean)
    支持引擎:SparkSQL、Presto。
    使用说明:如果 ts1 晚于 ts2,则结果为正。如果 ts1 和 ts2 在当月的同一天,或两者都是当月的最后一天,则将忽略当天的时间。否则,差值根据每月31天计算,并四舍五入到8位,除非 roundOff 为false。
    返回类型:double
    示例:
    > SELECT months_between('1997-02-28 10:30:00', '1996-10-30');
    3.94959677
    > SELECT months_between('1997-02-28 10:30:00', '1996-10-30', false);
    3.9495967741935485

    NEXT_DAY

    函数语法:
    NEXT_DAY(<start_date> date|timestamp|string, <day_of_week> string
    支持引擎:SparkSQL、Presto。
    使用说明:返回start_date后的第一个指定星期。
    返回类型: SparkSQL:date Presto:string
    示例:
    > SELECT next_day('2015-01-14', 'TU');
    2015-01-20

    NOW

    函数语法:
    NOW()
    支持引擎:SparkSQL、Presto。
    使用说明:返回当前时间戳。
    返回类型:timestamp。
    示例:
    > SELECT now();
    2020-04-25 15:49:11.914

    QUARTER

    函数语法:
    QUARTER(<d> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回 d 所在季度。
    返回类型:integer。
    示例:
    > SELECT quarter('2016-08-31');
    3

    SECOND

    函数语法:
    SECOND(<ts> timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回当前时间戳的秒数。
    返回类型:integer。
    示例:
    > SELECT second('2009-07-30 12:58:59');
    59

    TO_TIMESTAMP

    函数语法:
    TO_TIMESTAMP(<ts_str> string[, <fmt> string]
    支持引擎:SparkSQL、Presto。
    使用说明:将 fmt 格式的 ts_str 表达式解析为时间戳。输入无效则返回 NULL。默认情况下,如果省略 fmt,它将遵循时间戳的强制转换规则。结果数据类型与配置值一致。
    返回类型:timestamp。
    示例:
    > SELECT to_timestamp('2016-12-31 00:12:00');
    2016-12-31 00:12:00
    > SELECT to_timestamp('2016-12-31', 'yyyy-MM-dd');
    2016-12-31 00:00:00

    TO_DATE

    函数语法:
    TO_DATE(<date_str> string[, <fmt> string])
    支持引擎:SparkSQL、Presto。
    使用说明:将 fmt 格式的 date_str 表达式解析为日期。输入无效则返回 NULL。默认情况下,如果省略 fmt,它将遵循日期的强制转换规则。结果数据类型与配置值一致。
    返回类型:date。
    示例:
    > SELECT to_date('2009-07-30 04:17:52');
    2009-07-30
    > SELECT to_date('2016-12-31', 'yyyy-MM-dd');
    2016-12-31

    TO_UNIX_TIMESTAMP

    函数语法:
    TO_UNIX_TIMESTAMP(<ts> date|timestamp|string[, <fmt> string])
    支持引擎:SparkSQL、Presto。
    使用说明:返回 ts 的 unix 时间戳。
    返回类型:bigint。
    示例:
    > SELECT to_unix_timestamp('2016-04-08', 'yyyy-MM-dd');
    1460098800

    TO_UTC_TIMESTAMP

    函数语法:
    -- SparkSQL
    TO_UTC_TIMESTAMP(<ts> date|timestamp|string, <timezone> string)
    
    -- Presto
    TO_UTC_TIMESTAMP(<ts> date|timestamp|string|interger|double|decimal, <timezone> string)
    支持引擎:SparkSQL、Presto。
    使用说明:将给定时区中的时间戳转换为 UTC。
    返回类型:timestamp。
    示例:
    -- SparkSQL
    > SELECT to_utc_timestamp('2016-08-31', 'Asia/Seoul');
    2016-08-30 15:00:00
    -- Presto
    > select to_utc_timestamp(10000, 'UTC');
    1970-01-01 08:00:10

    TRUNC

    函数语法:
    TRUNC(<d> date|string, <fmt> string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回将日期 d 按照 fmt 指定的时间单位进行截取后的日期值。
    返回类型:date。
    示例:
    > SELECT trunc('2019-08-04', 'week');
    2019-07-29
    > SELECT trunc('2019-08-04', 'quarter');
    2019-07-01
    > SELECT trunc('2009-02-12', 'MM');
    2009-02-01
    > SELECT trunc('2015-10-27', 'YEAR');
    2015-01-01

    DATE_TRUNC

    函数语法:
    DATE_TRUNC(<fmt> string, <ts> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回将时间戳 ts 按照 fmt 截断后的时间戳 。
    返回类型:timestamp。
    示例:
    > SELECT date_trunc('YEAR', '2015-03-05T09:32:05.359');
    2015-01-01 00:00:00
    > SELECT date_trunc('MM', '2015-03-05T09:32:05.359');
    2015-03-01 00:00:00
    > SELECT date_trunc('DD', '2015-03-05T09:32:05.359');
    2015-03-05 00:00:00
    > SELECT date_trunc('HOUR', '2015-03-05T09:32:05.359');
    2015-03-05 09:00:00
    > SELECT date_trunc('MILLISECOND', '2015-03-05T09:32:05.123456');
    2015-03-05 09:32:05.123

    UNIX_TIMESTAMP

    函数语法:
    UNIX_TIMESTAMP([<ts> date|timestamp|string[, fmt]])
    支持引擎:SparkSQL、Presto。
    使用说明:返回当前或指定时间的 UNIX 时间戳。
    返回类型:bigint。
    示例:
    > SELECT unix_timestamp();
    1476884637
    > SELECT unix_timestamp('2016-04-08', 'yyyy-MM-dd');
    1460041200

    DAYOFWEEK

    函数语法:
    DAYOFWEEK(<d> date|timestamp|string)
    支持引擎:parkSQL、Presto。
    使用说明:回日期/时间戳“d”是星期几。
    返回类型:nteger。
    示例:
    > SELECT dayofweek('2009-07-30');
    5

    WEEKDAY

    函数语法:
    WEEKDAY(<d> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回日期/时间戳“d”是星期几。
    返回类型:integer。
    示例:
    > SELECT weekday('2009-07-30');
    3

    WEEKOFYEAR

    函数语法:
    WEEKOFYEAR(<d> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回给定日期“d”是一年中的第几周。
    返回类型:integer。
    示例:
    > SELECT weekofyear('2008-02-20');
    8

    YEAR

    函数语法:
    YEAR(<d> date|timestamp|string)
    支持引擎:SparkSQL、Presto。
    使用说明:返回日期/时间戳“d”中的年份。
    返回类型:integer。
    示例:
    > SELECT year('2016-07-30');
    2016

    MAKE_DATE

    函数语法:
    MAKE_DATE(<year> integer, <month> integer, <day> integer)
    支持引擎:SparkSQL、Presto。
    使用说明:从 year、month 和 day 字段创建日期。
    返回类型:date。
    示例:
    > SELECT make_date(2013, 7, 15);
    2013-07-15
    > SELECT make_date(2019, 7, NULL);
    NULL

    MAKE_TIMESTAMP

    函数语法:
    MAKE_TIMESTAMP(<year> integer, <month> integer, <day> integer, <hour> integer, <min> integer, <sec> integer|double|decimal[, <timezone> string])
    支持引擎:SparkSQL、Presto。
    使用说明:根据给定字段创建时间戳。
    返回类型:timestamp。
    示例:
    > SELECT make_timestamp(2014, 12, 28, 6, 30, 45.887);
    2014-12-28 06:30:45.887
    > SELECT make_timestamp(2014, 12, 28, 6, 30, 45.887, 'CET');
    2014-12-27 21:30:45.887
    > SELECT make_timestamp(2019, 6, 30, 23, 59, 60);
    2019-07-01 00:00:00
    > SELECT make_timestamp(2019, 6, 30, 23, 59, 1);
    2019-06-30 23:59:01
    > SELECT make_timestamp(null, 7, 22, 15, 30, 0);
    NULL

    DATE_PART

    函数语法:
    DATE_PART(<field> string, <source> date|timestamp)
    支持引擎:SparkSQL、Presto。
    使用说明:提取日期/时间戳的一部分。
    返回类型:integer|double。
    示例:
    > SELECT date_part('YEAR', TIMESTAMP '2019-08-12 01:00:00.123456');
    2019
    > SELECT date_part('week', timestamp '2019-08-12 01:00:00.123456');
    33
    > SELECT date_part('doy', DATE'2019-08-12');
    224
    > SELECT date_part('SECONDS', timestamp'2019-10-01 00:00:01.000001');
    1.000001

    DATE_FROM_UNIX_DATE

    函数语法:
    DATE_FROM_UNIX_DATE(<unix_timestamp> integer)
    支持引擎:SparkSQL、Presto。
    使用说明:根据自1970-01-01以来的天数创建日期。
    返回类型:date。
    示例:
    > SELECT date_from_unix_date(1);
    1970-01-02

    UNIX_DATE

    函数语法:
    UNIX_DATE(<d> date)
    支持引擎:SparkSQL、Presto。
    使用说明:返回自1970-01-01以来的天数。
    返回类型:integer。
    示例:
    > SELECT unix_date(DATE("1970-01-02"));
    1

    TIMESTAMP_SECONDS

    函数语法:
    TIMESTAMP_SECONDS(<sec> bigint|double|decimal)
    支持引擎:SparkSQL、Presto。
    使用说明:从 UTC 纪元以来的秒数创建时间戳。
    返回类型:timestamp。
    示例:
    > SELECT timestamp_seconds(1230219000);
    2008-12-25 07:30:00
    > SELECT timestamp_seconds(1230219000.123);
    2008-12-25 07:30:00.123

    TIMESTAMP_MILLIS

    函数语法:
    TIMESTAMP_MILLIS(<milli> bigint|double|decimal)
    支持引擎:SparkSQL、Presto。
    使用说明:从 UTC 纪元以来的毫秒数创建时间戳。
    返回类型:timestamp。
    示例:
    > SELECT timestamp_millis(1230219000123);
    2008-12-25 07:30:00.123

    TIMESTAMP_MICROS

    函数语法:
    TIMESTAMP_MICROS(<micro> bigint)
    支持引擎:SparkSQL、Presto。
    使用说明:从 UTC 纪元以来的毫秒数创建时间戳。
    返回类型:timestamp。
    示例:
    > SELECT timestamp_micros(1230219000123123);
    2008-12-25 07:30:00.123123

    UNIX_SECONDS

    函数语法:
    UNIX_SECONDS(<ts> timestamp)
    支持引擎:SparkSQL、Presto。
    使用说明:返回自1970-01-01 00:00:00 UTC以来的秒数。
    返回类型:bigint。
    示例:
    > SELECT unix_seconds(TIMESTAMP('1970-01-01 00:00:01Z'));
    1

    UNIX_MILLIS

    函数语法:
    UNIX_MILLIS(<ts> timestamp)
    支持引擎:SparkSQL、Presto。
    使用说明:返回自1970-01-01 00:00:00 UTC 以来的毫秒数。
    返回类型:bigint。
    示例:
    > SELECT unix_millis(TIMESTAMP('1970-01-01 00:00:01Z'));
    1000

    UNIX_MICROS

    函数语法:
    UNIX_MICROS(<ts> timestamp)
    支持引擎:SparkSQL。
    使用说明:返回自1970-01-01 00:00:00 UTC 以来的微秒数。
    返回类型:bigint。
    示例:
    > SELECT unix_micros(timestamp '1970 00:00:00.001')
    1000

    DATEADD/TIMESTAMP_ADD

    函数语法:
    TIMESTAMP_ADD(<date|timestamp> dt, <int> delta, <string> pattern)
    TIMESTAMP_ADD(<date|timestamp> dt, <int> delta, <string> pattern)
    支持引擎:SparkSQL。
    引擎版本要求:需在2023年12月07日及以后购买的引擎、或升级到最新引擎。
    使用说明:在指定的日期或时间上,根据指定的单位和偏移量计算最终的时间。
    dt:输入的日期或时间格式。如果为null则返回为null。
    delta:必填,int类型。如果为null则返回null。
    pattern:必填,string类型,单位。pattern 可以支持:
    年(标准"y", 可兼容"-year", "yyyy")
    月(标准"M", 可兼容"-month","-mon", "MM")
    日(标准"d",可兼容"-day","dd")
    小时(标准"H",可兼容"-hour", "hh", "HH", "h")
    分钟 (标准"m",可兼容"mi", "mm")
    秒(标准"s",可兼容"ss")
    微秒(标准"S",可兼容"SSS")
    不允许输入其他的类型,否则会报错。
    注意:
    当 delta 的单位是月时,如果 delta 的月部分在增加 delta 值之后不造成 Day 溢出,则保持 Day 值不变,否则将 Day 值设置为结果月份的最后1天。
    注意输出的时间默认是时区的。
    月M和分钟m的单位区别;兼容了0-12小时制h和0-24小时制H,但是推荐使用H。
    返回类型:timestamp。
    示例:
    > SELECT timestamp_add(date '2016-12-31', -1, 'M');
    2016-11-30T00:00:00.000+08:00
    > SELECT timestamp_add(timestamp '2016-12-31 00:12:00', 1, 'm');
    2016-12-31T00:13:00.000+08:00
    > SELECT timestamp_add(timestamp '2016-12-31 00:00:00', -1, 'm');
    2016-12-30T23:59:00.000+08:00
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持