Doris常用函数

3 篇文章 0 订阅
2 篇文章 0 订阅

-- 日期函数

-- -- 时区转换

SELECT CONVERT_TZ('2019-08-01 13:21:03', 'Asia/Shanghai', 'America/Los_Angeles');

SELECT CONVERT_TZ('2019-08-01 13:21:03', '+08:00', 'America/Los_Angeles');

-- -- 当前日期 2019-12-20

SELECT CURDATE();

SELECT CURRENT_DATE();

-- -- 当前时间 15:25:47

SELECT CURTIME();

SELECT CURRENT_TIME();

-- -- 当前时间戳,到秒 2022-09-22 17:30:23

SELECT CURRENT_TIMESTAMP();

SELECT LOCALTIME();

SELECT LOCALTIMESTAMP();

SELECT NOW();

-- -- 年、月、日、周、工作日

SELECT YEAR('1987-01-01 00:00:00'); -- 1987

SELECT QUARTER('1987-05-01 00:00:00'); -- 2

SELECT MONTH('1987-07-01 00:00:00'); -- 7

SELECT DAY('1987-07-18 00:00:00'); -- 18

SELECT DAYOFYEAR('1987-07-18 00:00:00'); -- 199

SELECT DAYOFMONTH('1987-07-18 00:00:00'); -- 18

SELECT DAYOFWEEK('1987-07-18 00:00:00'); -- 7

SELECT WEEK('1987-07-18 00:00:00'); -- 28 [date, mode] (mode默认0,星期的第一天为周日,这一年的第一个星期日所在的星期为本年第一周)

SELECT WEEKDAY('1987-07-18 00:00:00'); -- 5 日期的工作日索引值。周一为 0 周二为 1

SELECT WEEKOFYEAR('1987-07-18 00:00:00'); -- 29 与week不同,需要注意

SELECT YEARWEEK('1987-07-18 00:00:00'); -- 198728 指定日期的年份和星期数 [date, mode] (mode默认0,星期的第一天为周日,这一年的第一个星期日所在的星期为本年第一周)

SELECT DAYNAME('1987-07-18 00:00:00'); -- saturday 返回日期对应的名字

SELECT MONTHNAME('1987-07-18 00:00:00'); -- July

SELECT HOUR('1987-07-18 00:00:00'); -- 时

SELECT MINUTE('1987-07-18 00:00:00');

SELECT FROM_DAYS(1000000); -- 2737-11-28 通过距离0000-01-01日的天数计算出哪一天

SELECT LAST_DAY('2737-11-28'); -- 2737-11-30 返回日期中月份的最后一天

SELECT to_monday('2737-11-30'); -- 2737-11-29 将日期或带时间的日期向下舍入到最近的星期一

-- -- 时间戳

SELECT FROM_UNIXTIME(100000,'%Y-%m-%d %H:%i:%s'); -- 1970-01-02 11:46:40 unix时间戳转换为对应的time字符串,format格式非法时,返回NULL

-- yyyy-MM-dd HH:mm:ss

SELECT UNIX_TIMESTAMP('1987-07-18 00:00:00','%Y-%m-%d %H:%i:%s'); -- 553536000 将 Date 或者 Datetime 类型转化为 unix 时间戳。

SELECT UTC_TIMESTAMP(); -- 2023-07-10 06:19:54 返回当前(国际标准时间)UTC日期和时间在 "YYYY-MM-DD HH:MM:SS" 或 "YYYYMMDDHHMMSS"格式的一个值

-- -- 时间转换

SELECT to_date('1987-07-18 00:00:00'); -- 返回 数据中的日期部分

SELECT TO_DAYS('1987-07-18 00:00:00'); -- 725935 返回date距离0000-01-01的天数

SELECT CURRENT_TIME(),TIME_TO_SEC(CURTIME()); -- 错误,后续查看原因。将时间值转换为对应的秒数

SELECT EXTRACT(YEAR FROM '1987-07-18 00:00:00'); -- 提取datetime某个指定单位的值。单位可以是year、month、day、hour、minute、second或microsecond

SELECT MAKEDATE(2021,10); -- 2021-01-10 返回指定年份和dayofyear构建的日期,dayofyear必须大于0

SELECT STR_TO_DATE('2014-12-21 12:34:56', '%Y-%m-%d %H:%i:%s'); -- 2014-12-21 12:34:56 字符串转换为日期

-- TIME_ROUND

-- 函数名 TIME_ROUND 由两部分组成,每部分由以下可选值组成

-- TIME: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR

-- ROUND: FLOOR, CEIL

-- DATETIME TIME_ROUND(DATETIME expr)

-- DATETIME TIME_ROUND(DATETIME expr, INT period)

-- DATETIME TIME_ROUND(DATETIME expr, DATETIME origin)

-- DATETIME TIME_ROUND(DATETIME expr, INT period, DATETIME origin)

SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP()); -- 08:00:00 两个日期之间的差值,返回值为time类型

SELECT TIMESTAMPADD(MINUTE, 1, NOW()); -- 2023-07-10 15:07:39 日期加,单位可以是 SECOND,MINUTE,HOUR,DAY,WEEK,MONTH,YEAR

-- INT TIMESTAMPDIFF(unit, DATETIME datetime_expr1, DATETIME datetime_expr2)

SELECT TIMESTAMPDIFF(MINUTE, NOW(), UTC_TIMESTAMP()); -- -480 以指定的单位返回两日期之间的差值

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值