日期和时间函数 |
您所在的位置:网站首页 › sas字符转时间戳 › 日期和时间函数 |
日志服务支持如下日期和时间函数。 重要日志服务中的日志时间戳精确到秒,所以配置时间格式(format)时,只需配置到秒,无需配置毫秒、微秒等信息。 只需为时间字符串中的时间部分配置时间格式(format),其他内容(例如时区)无需配置时间格式。 日志服务中的每条日志都包含保留字段__time__,该字段的值为UNIX时间戳格式,例如1592374067,代表2020-06-17 14:07:47。 在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如'status'表示字符串status,status或"status"表示日志字段status。 函数类型 函数名称 语法 说明 支持SQL 支持SPL 日期和时间函数 current_date函数 current_date 返回当前日期。 √ × current_time函数 current_time 返回当前时间和时区。 √ × current_timestamp函数 current_timestamp 返回当前日期、时间和时区。 √ × current_timezone函数 current_timezone() 返回当前时区。 √ × date函数 date(x) 返回日期和时间表达式中的日期部分。 √ × date_format函数 date_format(x, format) 将timestamp类型的日期和时间表达式转化为指定格式的日期和时间表达式。 √ √ date_parse函数 date_parse(x, format) 将日期和时间字符串转换为指定格式的timestamp类型的日期和时间表达式。 √ √ from_iso8601_date函数 from_iso8601_date(x) 将ISO8601格式的日期表达式转化为date类型的日期表达式。 √ × from_iso8601_timestamp函数 from_iso8601_timestamp(x) 将ISO8601格式的日期和时间表达式转化为timestamp类型的日期和时间表达式。 √ × from_unixtime函数 from_unixtime(x) 将UNIX时间戳转化为无时区的timestamp类型的日期和时间表达式。 √ √ from_unixtime(x, time zone) 将UNIX时间戳转化为带时区的timestamp类型的日期和时间表达式。 √ × from_unixtime(x, hours, minutes) 将UNIX时间戳转化为带时区的timestamp类型的日期和时间表达式,其中hours和minutes为时区偏移量。 √ × localtime函数 localtime 返回本地时间。 √ × localtimestamp函数 localtimestamp 返回本地日期和时间。 √ × now函数 now() 返回当前日期和时间。 now函数等同于current_timestamp函数。 √ × to_iso8601函数 to_iso8601(x) 将date类型或timestamp类型的日期和时间表达式转换为ISO8601格式的日期和时间表达式。 √ × to_unixtime函数 to_unixtime(x) 将timestamp类型的日期和时间表达式转化成UNIX时间戳。 √ √ 日期和时间提取函数 day函数 day(x) 提取日期和时间表达式中的天数,按月计算。 day函数等同于day_of_month函数。 √ × day_of_month函数 day_of_month(x) 提取日期和时间表达式中的天数,按月计算。 day_of_month函数等同于day函数。 √ × day_of_week函数 day_of_week(x) 提取日期和时间表达式中的天数,按周计算。 day_of_week函数等同于dow函数。 √ √ day_of_year函数 day_of_year(x) 提取日期和时间表达式中的天数,按年计算。 day_of_year函数等同于doy函数。 √ √ dow函数 dow(x) 提取日期和时间表达式中的天数,按周计算。 dow函数等同于day_of_week函数。 √ √ doy函数 doy(x) 提取日期和时间表达式中的天数,按年计算。 doy函数等同于day_of_year函数。 √ √ extract函数 extract(field from x) 通过指定的field,提取日期和时间表达式中的日期或时间部分。 √ × hour函数 hour(x) 提取日期和时间表达式中的小时数,按24小时制计算。 √ √ minute函数 minute(x) 提取日期和时间表达式中的分钟数。 √ √ month函数 month(x) 提取日期和时间表达式中的月份。 √ √ quarter函数 quarter(x) 计算目标日期所属的季度。 √ √ second函数 second(x) 提取日期和时间表达式中的秒数。 √ √ timezone_hour函数 timezone_hour(x) 计算时区的小时偏移量。 √ × timezone_minute函数 timezone_minute(x) 计算时区的分钟偏移量。 √ × week函数 week(x) 计算目标日期是在一年中的第几周。 week函数等同于week_of_year函数。 √ × week_of_year函数 week_of_year(x) 计算目标日期是在一年中的第几周。 week_of_year函数等同于week函数。 √ × year函数 year(x) 提取目标日期中的年份。 √ √ year_of_week函数 year_of_week(x) 提取目标日期在ISO周日历中的年份。 year_of_week函数等同于yow函数。 √ √ yow函数 yow(x) 提取目标日期在ISO周日历中的年份。 yow函数等同于year_of_week函数。 √ √ 时间间隔函数 date_trunc函数 date_trunc(unit, x) 根据您指定的时间单位截断日期和时间表达式,并按照毫秒、秒、分钟,小时、日、月或年对齐。 √ × date_add函数 date_add(unit, N, x) 在x上加上N个时间单位(unit)。 √ √ date_diff函数 date_diff(unit, x, y) 返回两个时间表达式之间的时间差值,例如计算x和y之间相差几个时间单位(unit)。 √ √ 时序补全函数 time_series函数 time_series(x, window, format, padding_data) 补全您查询时间窗口内缺失的数据。 √ × current_date函数current_date函数用于返回当前日期,格式为YYYY-MM-DD。 语法current_date返回值类型date类型。 示例查询昨天的日志。 查询和分析语句(调试) * | SELECT * FROM log WHERE __time__ < to_unixtime(current_date) AND __time__ > to_unixtime(date_add('day', -1, current_date))查询和分析结果 current_time函数用于返回当前时间和时区,格式为HH:MM:SS.Ms Time_zone。 语法current_time返回值类型time类型。 示例查询当前时间和时区。 查询和分析语句(调试) * | select current_time查询和分析结果 current_timestamp函数用于返回当前日期、时间和时区,格式为YYYY-MM-DD HH:MM:SS.Ms Time_zone。 语法current_timestamp返回值类型timestamp类型。 示例查询昨天的日志。 查询和分析语句(调试) * | SELECT * FROM log WHERE __time__ < to_unixtime(current_timestamp) AND __time__ > to_unixtime(date_add('day', -1, current_timestamp))查询和分析结果 current_timezone函数用于返回当前时区。 语法current_timezone()返回值类型varchar类型。 示例查询当前的时区。 查询和分析语句(调试) * | select current_timezone()查询和分析结果 date函数用于提取日期和时间表达式中的日期部分。date函数等同于cast(x as date)。更多信息,请参见类型转换函数。 语法date(x)参数说明参数 说明 x 参数值为date、timestamp类型。 返回值类型date类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用date函数提取日期部分。 查询和分析语句(调试) * | SELECT current_timestamp, date(current_timestamp)查询和分析结果 date_format函数用于将timestamp类型的日期和时间表达式转换为指定格式的日期和时间表达式。 语法date_format(x, format)参数说明参数 说明 x 参数值为timestamp类型的日期和时间表达式。 format 日期和时间表达式的转换格式。更多信息,请参见format说明。 返回值类型varchar类型。 示例计算Nginx请求状态及数量,并根据时间顺序展示。首先通过date_trunc函数将日志时间按照分钟对齐,再使用date_format函数转换为%H:%i格式,然后计算每分钟内每个状态码对应的请求数量,并以流图展示查询和分析结果。 查询和分析语句(调试) * | SELECT date_format(date_trunc('minute', __time__), '%H:%i') AS time, COUNT(1) AS count, status GROUP BY time, status ORDER BY time查询和分析结果 date_parse函数用于将日期和时间字符串转换为指定格式的timestamp类型的日期和时间表达式。 语法date_parse(x, format)参数说明参数 说明 x 参数值为日期和时间字符串。 format 日期和时间表达式的转换格式。更多信息,请参见format说明。 返回值类型timestamp类型。 示例将StartTime字段值和EndTime字段值转换为timestamp类型,并计算两者的时间差。 查询和分析语句 *| SELECT date_parse(StartTime, '%Y-%m-%d %H:%i') AS "StartTime", date_parse(EndTime, '%Y-%m-%d %H:%i') AS "EndTime", date_diff('hour', StartTime, EndTime) AS "时间差(小时)"查询和分析结果 from_iso8601_date函数用于将ISO8601格式的日期表达式转化为date类型的日期表达式,格式为YYYY-MM-DD。 语法from_iso8601_date(x)参数说明参数 说明 x 参数值为ISO8601格式的日期表达式。 返回值类型date类型。 示例将time字段的值转换为date类型的日期表达式。 字段样例 time:2020-05-03查询和分析语句 * | select from_iso8601_date(time)查询和分析结果 from_iso8601_timestamp函数用于将ISO8601格式的日期和时间表达式转化为timestamp类型的日期和时间表达式,格式为YYYY-MM-DD HH:MM:SS.Ms Time_zone。 语法from_iso8601_timestamp(x)参数说明参数 说明 x 参数值为ISO8601格式的日期和时间表达式。 返回值类型timestamp类型。 示例将time字段的值转换为timestamp类型的日期和时间表达式。 字段样例 time:2020-05-03T17:30:08查询和分析语句 * | select from_iso8601_timestamp(time)查询和分析结果 from_unixtime函数用于将UNIX时间戳转化为timestamp类型的日期和时间表达式,格式为YYYY-MM-DD HH:MM:SS.Ms或YYYY-MM-DD HH:MM:SS.Ms Time_zone。 语法转化为无时区的timestamp类型的日期和时间表达式 from_unixtime(x)转化为带时区的timestamp类型的日期和时间表达式 from_unixtime(x,time zone)转化为带时区的timestamp类型的日期和时间表达式,其中hours和minutes为时区偏移量。 from_unixtime(x, hours, minutes)参数说明参数 说明 x 参数值为UNIX时间戳。 time zone 时区,例如Asia/shanghai。 hours 时区的小时偏移量,例如+07、-09 minutes 时区的分钟偏移量,例如+30、-45。 返回值类型timestamp类型。 示例将time字段的值转化为带时区的timestamp类型的日期和时间表达式。 字段样例 time:1626774758查询和分析语句 * | select from_unixtime(time,'Asia/shanghai')查询和分析结果 localtime函数用于返回本地时间,格式为HH:MM:SS.Ms。 语法localtime返回值类型time类型。 示例查询本地时间。 查询和分析语句(调试) * | select localtime查询和分析结果 localtimestamp函数用于返回本地的日期和时间,格式为YYYY-MM-DD HH:MM:SS.Ms Time_zone。 语法localtimestamp返回值类型timestamp类型。 示例查询昨天的日志。 查询和分析语句(调试) * | SELECT * FROM log WHERE __time__ < to_unixtime(localtimestamp) AND __time__ > to_unixtime(date_add('day', -1, localtimestamp))查询和分析结果 now函数用于返回当前日期和时间,格式为YYYY-MM-DD HH:MM:SS.Ms Time_zone。now函数等同于current_timestamp函数。 语法now()返回值类型timestamp类型。 示例查询昨天的日志。 查询和分析语句(调试) * | SELECT * FROM log WHERE __time__ < to_unixtime(now()) AND __time__ > to_unixtime(date_add('day', -1, now()))查询和分析结果 to_iso8601函数用于将date类型或timestamp类型的日期和时间表达式转换为ISO8601格式的日期和时间表达式。 语法to_iso8601(x)参数说明参数 说明 x 参数值为date、timestamp类型。 返回值类型varchar类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用to_iso8601函数将当前的日期和时间表达式转换为ISO8601格式的日期和时间表达式。 查询和分析语句(调试) * | select to_iso8601(current_timestamp) AS ISO8601查询和分析结果 to_unixtime函数用于将timestamp类型的日期和时间表达式转化成UNIX时间戳。 语法to_unixtime(x)参数说明参数 说明 x 参数值为timestamp类型的日期和时间表达式。 返回值类型double类型。 示例查询昨天的日志。 查询和分析语句(调试) * | SELECT * FROM log WHERE __time__ < to_unixtime(now()) AND __time__ > to_unixtime(date_add('day', -1, now()))查询和分析结果 day函数用于提取日期和时间表达式中的天数,按月计算。day函数等同于day_of_month函数。 语法day(x)参数说明参数 说明 x 参数值为timestamp、date类型。 返回值类型bigint类型。 示例使用current_date函数获取当前日期,然后使用day函数提取当前日期为本月的第几天。 查询和分析语句(调试) * | SELECT current_date, day(current_date)查询和分析结果 day_of_month函数用于提取日期和时间表达式中的天数,按月计算。day_of_month函数等同于day函数。 语法day_of_month(x)参数说明参数 说明 x 参数值为timestamp、date类型。 返回值类型bigint类型。 示例使用current_date函数获取当前日期,然后使用day_of_month函数提取当前日期为本月的第几天。 查询和分析语句(调试) * | SELECT current_date, day_of_month(current_date)查询和分析结果 day_of_week函数用于提取日期和时间表达式中的天数,按周计算。 语法day_of_week(x)参数说明参数 说明 x 参数值为timestamp、date类型。 返回值类型bigint类型。 示例使用current_date函数获取当前日期,然后使用day_of_week函数提取当前日期为本周的第几天。 查询和分析语句(调试) * | SELECT current_date, day_of_week(current_date)查询和分析结果 day_of_year函数用于提取日期和时间表达式中的天数,按年计算。 语法day_of_year(x)参数说明参数 说明 x 参数值为timestamp、date类型。 返回值类型bigint类型。 示例使用current_date函数获取当前日期,然后使用day_of_year函数提取当前日期为本年的第几天。 查询和分析语句(调试) * | SELECT current_date, day_of_year(current_date)查询和分析结果 dow函数用于提取日期和时间表达式中的天数,按周计算。dow函数等同于day_of_week函数。 语法dow(x)参数说明参数 说明 x 参数值为timestamp、date类型。 返回值类型bigint类型。 示例使用current_date函数获取当前日期,然后使用dow函数提取当前日期为本周的第几天。 查询和分析语句(调试) * | SELECT current_date, dow(current_date)查询和分析结果 doy函数用于提取日期和时间表达式中的天数,按年计算。doy函数等同于day_of_year函数。 语法doy(x)参数说明参数 说明 x 参数值为timestamp、date类型。 返回值类型bigint类型。 示例使用current_date函数获取当前日期,然后使用doy函数提取当前日期为本年的第几天。 查询和分析语句(调试) * | SELECT current_date, doy(current_date)查询和分析结果 extract函数通过指定的field,提取日期和时间表达式中的日期或时间部分。 语法extract(field from x)参数说明参数 说明 field 取值为year、quarter、month、week、day、day_of_month、day_of_week、dow、day_of_year、doy、year_of_week、yow、hour、minute、second、timezone_hour、timezone_minute。 x 参数值为date、time、timestamp、interval (actual varchar(9)) 类型。 返回值类型bigint类型。 示例使用current_date函数获取当前日期,然后使用extract函数提取当前日期中的年份。 查询和分析语句(调试) * | SELECT extract(year from current_date)查询和分析结果 hour函数用于提取日期和时间表达式中的小时数,按24小时制计算。 语法hour(x)参数说明参数 说明 x 参数值为timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用hour函数提取当前时间的小时数。 查询和分析语句(调试) * | SELECT current_timestamp, hour(current_timestamp)查询和分析结果 minute函数用于提取日期和时间表达式中的分钟数。 语法minute(x)参数说明参数 说明 x 参数值为timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用minute函数提取当前时间的分钟数。 查询和分析语句(调试) * | SELECT current_timestamp, minute(current_timestamp)查询和分析结果 month函数用于提取日期和时间表达式中的月份。 语法month(x)参数说明参数 说明 x 参数值为date、timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用month函数提取当前日期所属的月份。 查询和分析语句(调试) * | SELECT current_timestamp, month(current_timestamp)查询和分析结果 quarter函数用于返回日期所属的季度。 语法quarter(x)参数说明参数 说明 x 参数值为date、timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用quarter函数计算当前日期所属的季度。 查询和分析语句(调试) * | SELECT current_timestamp,quarter(current_timestamp)查询和分析结果 second函数用于提取日期和时间表达式中的秒数。 语法second(x)参数说明参数 说明 x 参数值为timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用second函数提取当前时间的秒数。 查询和分析语句(调试) * | SELECT current_timestamp,second(current_timestamp)查询和分析结果 timezone_hour函数用于计算时区的小时偏移量。 语法timezone_hour(x)参数说明参数 说明 x 参数值为timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用timezone_hour函数计算当前时间所属时区的小时偏移量。 查询和分析语句(调试) * | SELECT current_timestamp, timezone_hour(current_timestamp)查询和分析结果 timezone_minute函数用于计算时区的分钟偏移量。 语法timezone_minute(x)参数说明参数 说明 x 参数值为timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用timezone_minute函数计算当前时间所属时区的分钟偏移量。 查询和分析语句(调试) * | SELECT current_timestamp,timezone_minute(current_timestamp)查询和分析结果 week函数用于计算目标日期是在一年中的第几周。week函数等同于week_of_year函数。 语法week(x)参数说明参数 说明 x 参数值为date、timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用week函数计算当前日期是一年中的第几周。 查询和分析语句(调试) * | SELECT current_timestamp, week(current_timestamp)查询和分析结果 week_of_year函数用于计算目标日期是在一年中的第几周。week_of_year函数等同于week函数。 语法week_of_year(x)参数说明参数 说明 x 参数值为date、timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用week_of_year函数计算当前日期是一年中的第几周。 查询和分析语句(调试) * | SELECT current_timestamp, week_of_year(current_timestamp)查询和分析结果 year函数用于提取目标日期中的年份。 语法year(x)参数说明参数 说明 x 参数值为date、timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用year函数提取当前日期中的年份。 查询和分析语句(调试) * | SELECT current_timestamp,year(current_timestamp)查询和分析结果 year_of_week函数用于返回目标日期在ISO周日历中的年份。year_of_week函数等同于yow函数。 语法year_of_week(x)参数说明参数 说明 x 参数值为date、timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用year_of_week函数返回当前日期在ISO周日历中的年份。 查询和分析语句(调试) * | SELECT current_timestamp,year_of_week(current_timestamp)查询和分析结果 yow函数用于返回目标日期在ISO周日历中的年份。yow函数等同于year_of_week函数。 语法yow(x)参数说明参数 说明 x 参数值为date、timestamp类型。 返回值类型bigint类型。 示例使用current_timestamp函数获取当前日期和时间,然后使用yow函数返回当前日期在ISO周日历中的年份。 查询和分析语句(调试) * | SELECT current_timestamp, yow(current_timestamp)查询和分析结果 date_trunc函数会根据您指定的时间单位截断日期和时间表达式,并按照毫秒、秒、分钟,小时、日、月或年对齐。该函数常用于需要按照时间进行统计分析的场景。 语法date_trunc(unit, x)参数说明参数 说明 unit 时间单位,取值为millisecond、second、minute、hour、day、week、month、quarter、year。更多信息,请参见unit说明。 x 参数值为日期和时间表达式。 说明date_trunc函数只能按照固定的时间间隔统计(例如每分钟、每小时等)。如果您需要按照灵活的时间维度统计,请使用数学取模方法进行分组,例如统计每5分钟的数据。 * | SELECT count(1) AS pv, __time__ - __time__ %300 AS time GROUP BY time LIMIT 100返回值类型与参数值的类型一致。 示例按照每分钟的时间粒度计算请求时间的平均值,并按照时间进行分组和排序。 查询和分析语句(调试) * | SELECT date_trunc('minute', __time__) AS time, truncate (avg(request_time)) AS avg_time, current_date AS date GROUP BY time ORDER BY time DESC LIMIT 100查询和分析结果 date_add函数用于在日期或时间中添加或减去指定的时间间隔。 语法date_add(unit, n, x)参数说明参数 说明 unit 时间单位,取值为millisecond、second、minute、hour、day、week、month、quarter、year。更多信息,请参见unit说明。 n 时间间隔。 x 参数值为timestamp类型日期和时间表达式。 返回值类型timestamp类型。 示例查询昨天的日志。 查询和分析语句(调试) * | SELECT * FROM log WHERE __time__ < to_unixtime(current_timestamp) AND __time__ > to_unixtime(date_add('day', -1, current_timestamp))查询和分析结果 date_diff函数用于计算两个日期或时间之间的差值。 语法date_diff(unit, x, y)参数说明参数 说明 unit 时间单位,取值为millisecond、second、minute、hour、day、week、month、quarter、year。更多信息,请参见unit说明。 x 参数值为timestamp类型日期和时间表达式。 y 参数值为timestamp类型日期和时间表达式。 返回值类型bigint类型。 示例通过UsageStartTime字段和UsageEndTime字段计算服务器使用的总时长。 查询和分析语句 * | SELECT date_diff('hour', UsageStartTime, UsageEndTime) AS "时间差(小时)"查询和分析结果 time_series函数用于补全您查询时间窗口内缺失的数据。 重要time_series函数必须搭配GROUP BY语法和ORDER BY语法使用,且ORDER BY语法不支持DESC排序方式。 语法time_series(x, window_time, format, padding_data)参数说明参数 说明 x 时间列,例如__time__。时间列的值为long类型或timestamp类型。 window_time 窗口大小,单位为s(秒)、m(分)、h(小时)、d(天)。例如2h、5m、3d。 format 返回结果的时间格式。更多信息,请参见format说明。 padding_data 补全的内容。包括: 0:将缺失的值设置为0。 null:将缺失的值设置为null。 last:将缺失的值设置了上一个时间点对应的值。 next:将缺失的值设置了下一个时间点对应的值。 avg:将缺失的值设置为前后两个时间点的平均值。 返回值类型varchar类型。 示例按照两个小时的时间粒度进行数据补全,将缺失的值设置为0。 查询和分析语句(调试) * | select time_series(__time__, '2h', '%Y-%m-%d %H:%i:%s', '0') as time, count(*) as num from log group by time order by time查询和分析结果 format 说明 %a 星期的缩写。例如Sun、Sat。 %b 月份的缩写。例如Jan、Dec。 %c 月份。数值类型,取值范围为1~12。 %D 每月的第几天。需加上后缀,例如0th、1st、2nd、3rd。 %d 每月的第几天。十进制格式,取值范围为01~31。 %e 每月的第几天。十进制格式,取值范围为1~31。 %H 小时,24小时制。 %h 小时,12小时制。 %i 分钟。数值类型,取值范围为00~59。 %j 每年的第几天。取值范围为001~366。 %k 小时。取值范围为0~23。 %l 小时。取值范围为1~12。 %M 月份的英文表达,例如January、December。 %m 月份。数值格式,取值范围为01~12。 %p AM、PM。 %r 时间。12小时制,格式为hh:mm:ss AM/PM。 %S 秒。取值范围为00~59。 %s 秒。取值范围为00~59。 %f 毫秒。取值范围为000~999。 %T 时间。24小时制,格式为hh:mm:ss。 %v 每年的第几周,星期一是一周的第一天。取值范围为01~53。 %W 星期几的名称。例如Sunday、Saturday。 %Y 4位数的年份。例如2020。 %y 2位数的年份。例如20。 %% %的转义字符。 unit说明unit 说明 millisecond 毫秒 second 秒 minute 分钟 hour 小时 day 天 week 周 month 月 quarter 季度 year 年 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |