【ClickHouse-Sql】ClickHouse 时间日期函数
【ClickHouse-Sql】ClickHouse 时间日期函数
- 1)常用时间函数
- 2)获取未来时间的函数
- 3)获取过去时间的函数
- 4)计算连个时刻在不同时间单位下的差值
1)常用时间函数
now() // 2020-04-01 17:25:40 取当前时间 toYear() // 2020 取日期中的年份 toMonth() // 4 取日期中的月份 today() // 2020-04-01 今天的日期 yesterday() // 2020-03-31 昨天的额日期 toDayOfYear() // 92 取一年中的第几天 toDayOfWeek() // 3 取一周中的第几天 toHour() //17 取小时 toMinute() //25 取分钟 toSecond() //40 取秒 toStartOfYear() //2020-01-01 取一年中的第一天 toStartOfMonth() //2020-04-01 取当月的第一天 formatDateTime(now(),'%Y-%m-%d') // 2020*04-01 指定时间格式 toYYYYMM() //202004 toYYYYMMDD() //20200401 toYYYYMMDDhhmmss() //20200401172540 dateDiff()
用例:
SELECT toDateTime('2019-07-30 10:10:10') AS time, -- 将DateTime转换成Unix时间戳 toUnixTimestamp(time) as unixTimestamp, -- 保留 时-分-秒 toDate(time) as date_local, toTime(time) as date_time, -- 将DateTime中的日期转换为一个固定的日期,同时保留时间部分。 -- 获取年份,月份,季度,小时,分钟,秒钟 toYear(time) as get_year, toMonth(time) as get_month, -- 一年分为四个季度。1(一季度:1-3),2(二季度:4-6),3(三季度:7-9),4(四季度:10-12) toQuarter(time) as get_quarter, toHour(time) as get_hour, toMinute(time) as get_minute, toSecond(time) as get_second, -- 获取 DateTime中的当前日期是当前年份的第几天,当前月份的第几日,当前星期的周几 toDayOfYear(time) as "当前年份中的第几天", toDayOfMonth(time) as "当前月份的第几天", toDayOfWeek(time) as "星期", toDate(time, 'Asia/Shanghai') AS date_shanghai, toDateTime(time, 'Asia/Shanghai') AS time_shanghai, -- 得到当前年份的第一天,当前月份的第一天,当前季度的第一天,当前日期的开始时刻 toStartOfYear(time), toStartOfMonth(time), toStartOfQuarter(time), toStartOfDay(time) AS cur_start_daytime, toStartOfHour(time) as cur_start_hour, toStartOfMinute(time) AS cur_start_minute, -- 从过去的某个固定的时间开始,以此得到当前指定的日期的编号 toRelativeYearNum(time), toRelativeQuarterNum(time);
2)获取未来时间的函数
-- 第一种,日期格式(指定日期,需注意时区的问题) WITH toDate('2019-09-09') AS date, toDateTime('2019-09-09 00:00:00') AS date_time SELECT addYears(date, 1) AS add_years_with_date, addYears(date_time, 0) AS add_years_with_date_time; -- 第二种,日期格式(当前,本地时间) WITH toDate(now()) as date, toDateTime(now()) as date_time SELECT now() as now_time,-- 当前时间 -- 之后1年 addYears(date, 1) AS add_years_with_date, addYears(date_time, 1) AS add_years_with_date_time, -- 之后1月 addMonths(date, 1) AS add_months_with_date, addMonths(date_time, 1) AS add_months_with_date_time, --之后1周 addWeeks(date, 1) AS add_weeks_with_date, addWeeks(date_time, 1) AS add_weeks_with_date_time, -- 之后1天 addDays(date, 1) AS add_days_with_date, addDays(date_time, 1) AS add_days_with_date_time, --之后1小时 addHours(date_time, 1) AS add_hours_with_date_time, --之后1分中 addMinutes(date_time, 1) AS add_minutes_with_date_time, -- 之后10秒钟 addSeconds(date_time, 10) AS add_seconds_with_date_time, -- 之后1个季度 addQuarters(date, 1) AS add_quarters_with_date, addQuarters(date_time, 1) AS add_quarters_with_date_time;
3)获取过去时间的函数
WITH toDate(now()) as date, toDateTime(now()) as date_time SELECT subtractYears(date, 1) AS subtract_years_with_date, subtractYears(date_time, 1) AS subtract_years_with_date_time, subtractQuarters(date, 1) AS subtract_Quarters_with_date, subtractQuarters(date_time, 1) AS subtract_Quarters_with_date_time, subtractMonths(date, 1) AS subtract_Months_with_date, subtractMonths(date_time, 1) AS subtract_Months_with_date_time, subtractWeeks(date, 1) AS subtract_Weeks_with_date, subtractWeeks(date_time, 1) AS subtract_Weeks_with_date_time, subtractDays(date, 1) AS subtract_Days_with_date, subtractDays(date_time, 1) AS subtract_Days_with_date_time, subtractHours(date_time, 1) AS subtract_Hours_with_date_time, subtractMinutes(date_time, 1) AS subtract_Minutes_with_date_time, subtractSeconds(date_time, 1) AS subtract_Seconds_with_date_time; SELECT toDate('2019-07-31', 'Asia/GuangZhou') as date_guangzhou; SELECT toDate('2019-07-31'), toDate('2019-07-31', 'Asia/Beijing') as date_beijing; -- 亚洲只能加载上海的timezone??? SELECT toDateTime('2019-07-31 10:10:10', 'Asia/Shanghai') as date_shanghai;
4)计算连个时刻在不同时间单位下的差值
-- 第一种:指定时间计算差值示例 WITH toDateTime('2019-07-30 10:10:10', 'Asia/Shanghai') as date_shanghai_one, toDateTime('2020-10-31 11:20:30', 'Asia/Shanghai') as date_shanghai_two SELECT dateDiff('year', date_shanghai_one, date_shanghai_two) as diff_years, dateDiff('month', date_shanghai_one, date_shanghai_two) as diff_months, dateDiff('week', date_shanghai_one, date_shanghai_two) as diff_week, dateDiff('day', date_shanghai_one, date_shanghai_two) as diff_days, dateDiff('hour', date_shanghai_one, date_shanghai_two) as diff_hours, dateDiff('minute', date_shanghai_one, date_shanghai_two) as diff_minutes, dateDiff('second', date_shanghai_one, date_shanghai_two) as diff_seconds; -- 第二种:本地当前时间示例 WITH now() as date_time SELECT dateDiff('year', date_time, addYears(date_time, 1)) as diff_years, dateDiff('month', date_time, addMonths(date_time, 2)) as diff_months, dateDiff('week', date_time, addWeeks(date_time, 3)) as diff_week, dateDiff('day', date_time, addDays(date_time, 3)) as diff_days, dateDiff('hour', date_time, addHours(date_time, 3)) as diff_hours, dateDiff('minute', date_time, addMinutes(date_time, 30)) as diff_minutes, dateDiff('second', date_time, addSeconds(date_time, 35)) as diff_seconds;
免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理!
部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!
图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!