使用场景:
Jsqlparse解析sql(interval 之后非数字解析失败,故没有用interval相关计算);
sql替换成clickhouse、druid时为了提高API规范性故也没有用format相关。
/30秒
-- 2019-05-31 18:37:30
FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP('2019-05-31 18:37:45')/30)*30)
/1分钟
-- 2019-05-31 18:37:00
FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP('2019-05-31 18:37:45')/60)*60)
/5分钟
-- 2019-05-31 18:35:00
FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP('2019-05-31 18:37:45')/300)*300)
/小时
-- 2019-05-31 18:00:00
FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP('2019-05-31 18:37:45')/3600)*3600)
/周(周日为每周第一天)
-- 2019-05-26
ADDDATE(DATE('2019-05-31 18:37:45'),-DAYOFWEEK('2019-05-31 18:37:45')+1)
/月
-- 2019-05-01
ADDDATE(DATE('2019-05-31 18:37:45'),-DAYOFMONTH('2019-05-31 18:37:45')+1)
/季度
-- 2019-04-01
TIMESTAMPADD(QUARTER,QUARTER('2019-05-31 18:37:45')-1 ,MAKEDATE(YEAR('2019-05-31 18:37:45'),1))
/年
-- 2019-01-01
ADDDATE(DATE('2019-05-31 18:37:45'),-DAYOFYEAR('2019-05-31 18:37:45')+1)
OR
MAKEDATE(YEAR('2019-05-31 18:37:45'),1)