参考链接:什么是ClickHouse? | ClickHouse Docs
-- 当前时间
SELECT now();
-- 返回当前日期(Date)。 其功能与’toDate(now())’相同。
SELECT today();
-- 返回昨天的日期(Date)。 其功能与’today() - 1’相同。
SELECT yesterday();
-- 函数将一段时间间隔添加到Date/DateTime,然后返回Date/DateTime
-- addYears, addMonths, addWeeks, addDays, addHours, addMinutes, addSeconds, addQuarters
SELECT addYears(now(),1);
SELECT addMonths(now(),1);
-- 函数将Date/DateTime减去一段时间间隔,然后返回Date/DateTime
-- subtractYears,subtractMonths,subtractWeeks,subtractDays,subtractours,subtractMinutes,subtractSeconds,subtractQuarters
SELECT subtractYears(now(),1);
SELECT subtractMonths(now(),1);
-- 将DateTime向前取整到当前分钟的开始
SELECT toStartOfMinute(now());
-- 将DateTime向前取整到当前小时的开始。
SELECT toStartOfHour(now());
-- 将DateTime向前取整到今天的开始。
SELECT toStartOfDay(now());
-- 将Date或DateTime向前取整到本月的第一天。 返回Date类型。
SELECT toStartOfMonth(now());
-- 将Date或DateTime向前取整到本周的星期一。 返回Date类型。
SELECT toMonday(now());
-- 获取当前日期是第几周(以周日开始)
SELECT toWeek(now());
-- 获取指定日期是第几周(以周日开始)
SELECT toDate('2023-01-08') AS date, toWeek(date)
-- 获取当前日期是第几周(以周一开始)
SELECT toWeek(now(),1);
-- 获取指定日期是第几周(以周一开始)
SELECT toDate('2023-01-08') AS date, toWeek(date,1)
-- 获取昨天的开始时间 day可替换为:second、minute、hour、day、week、month、quarter、year
SELECT toStartOfDay(date_add(day, -1, now()));
-- 获取上周的开始时间
SELECT formatDateTime(toStartOfWeek(date_sub(week, 1, now()),1),'%F');
-- 获取上周的结束时间
select formatDateTime(date_add(DAY, 7-toDayOfWeek(date_sub(week, 1, now())), date_sub(week, 1, now())),'%F');
-- 返回两个日期或具有时间值的日期之间的差值。
SELECT toDate('2023-01-06') AS startdate,toDate('2023-01-07') AS enddate, date_diff(day, startdate, enddate)
SELECT dateDiff(hour, toDateTime('2023-01-06 22:00:00'), toDateTime('2023-01-07 23:00:00'));
-- 从提供的日期或带时间的日期中减去时间间隔或日期间隔。
SELECT date_sub(week, 1, toDate('2023-05-25'));
-- 将指定的时间值与提供的日期或日期时间值相加。
select timestamp_add(toDate('2023-05-25'), INTERVAL 3 MONTH);
-- 从提供的日期或带时间的日期中减去时间间隔。
select timestamp_sub(MONTH, 5, toDateTime('2023-05-25 01:02:03'));