新闻详情

新闻详情

首页 / 资讯中心 / 详情

MaxCompute中日期与时间函数

发布时间:2026/9/28 20:39:22来源:尧图网络
MaxCompute中日期与时间函数
文章目录一、分类总览1、函数分类2、全部函数二、当前时间 / 时区类1、定义2、区别3、简单记忆4、案例三、日期加减类1、定义2、区别3、简单记忆4、案例四、日期差值类1、定义2、区别3、简单记忆4、案例五、格式转换类1、定义2、区别3、简单记忆4、案例六、时间戳转换类1、定义2、区别3、简单记忆4、案例七、时区转换类1、定义2、区别3、简单记忆4、案例八、日期 / 时间截断类1、定义2、区别3、简单记忆4、案例九、日期部分提取类1、定义2、区别3、简单记忆4、案例十、月末 / 星期计算类1、定义2、区别3、简单记忆4、案例十一、日期校验类1、定义2、区别3、简单记忆4、案例十二、最容易混淆的函数对比十三、常用案例1、获取昨天日期2、获取业务日期 yyyyMMdd3、获取月份 yyyyMM4、计算两个时间相差分钟数5、13 位毫秒时间戳转日期6、获取月末日期7、按月截断日期8、字符串日期转换十四、参考资料一、分类总览1、函数分类分类主要解决的问题代表函数1、当前时间 / 时区类获取当前时间、当前时区CURRENT_TIMESTAMP、CURRENT_TIMEZONE、GETDATE、NOW2、日期加减类对日期增加或减少年、月、日、时、分、秒ADD_MONTHS、DATE_ADD、DATE_SUB、DATEADD、TIME_ADD、TIME_SUB3、日期差值类计算两个日期或时间之间的差值DATEDIFF、MONTHS_BETWEEN、TIME_DIFF4、格式转换类日期、字符串、TIME 之间格式转换DATE_FORMAT、TO_CHAR、TO_DATE、FORMAT_TIME5、时间戳转换类UNIX 秒、毫秒、TIME、TIMESTAMP_NTZ 转换FROM_UNIXTIME、UNIX_TIMESTAMP、TO_MILLIS、TO_TIME、TO_TIMESTAMP_NTZ6、时区转换类UTC 与指定时区之间转换FROM_UTC_TIMESTAMP、TO_UTC_TIMESTAMP7、日期 / 时间截断类按年、月、日、小时等粒度截断DATETRUNC、TIME_TRUNC、TRUNC_TIME8、日期部分提取类提取年、月、日、时、分、秒、季度、星期DATEPART、EXTRACT、YEAR、MONTH、DAY等9、月末 / 星期计算类获取月末、下一个指定星期LAST_DAY、LASTDAY、NEXT_DAY10、日期校验类判断字符串是否符合日期格式ISDATE2、全部函数分类函数功能1、当前时间 / 时区类CURRENT_TIMESTAMP返回当前TIMESTAMP时间戳1、当前时间 / 时区类CURRENT_TIMEZONE返回当前系统时区1、当前时间 / 时区类GETDATE获取当前系统时间返回DATETIME1、当前时间 / 时区类NOW获取当前系统日期与时间返回DATETIME2、日期加减类ADD_MONTHS日期增加或减少指定月数2、日期加减类DATE_ADD日期增加或减少指定天数2、日期加减类DATE_SUB日期减少或增加指定天数2、日期加减类DATEADD按年、月、日、时、分、秒修改日期2、日期加减类TIME_ADDTIME 时间增加指定幅度2、日期加减类TIME_SUBTIME 时间减少指定幅度3、日期差值类DATEDIFF计算两个日期的差值3、日期差值类MONTHS_BETWEEN计算两个日期之间相差的月数3、日期差值类TIME_DIFF计算两个 TIME 时间之间的差值4、格式转换类DATE_FORMAT日期转指定格式字符串4、格式转换类FORMAT_TIMETIME 微秒值转时间字符串4、格式转换类TO_CHAR日期转指定格式字符串4、格式转换类TO_DATE指定格式字符串转日期5、时间戳转换类FROM_UNIXTIMEUNIX 秒时间戳转日期5、时间戳转换类TO_MILLIS日期转 UNIX 毫秒时间戳5、时间戳转换类TO_TIME构造或转换为微秒表示的 TIME5、时间戳转换类TO_TIMESTAMP_NTZ转换为无时区TIMESTAMP_NTZ5、时间戳转换类UNIX_TIMESTAMP日期转 UNIX 秒时间戳6、时区转换类FROM_UTC_TIMESTAMPUTC 时间转换到指定时区6、时区转换类TO_UTC_TIMESTAMP指定时区时间转换为 UTC7、日期 / 时间截断类DATETRUNC日期按年、月、日等粒度截断7、日期 / 时间截断类TIME_TRUNCTIME 按小时、分钟、秒等粒度截断7、日期 / 时间截断类TRUNC_TIME日期或时间按粒度截断后返回字符串8、日期部分提取类DATEPART按指定单位提取日期字段8、日期部分提取类DAY提取日期中的日8、日期部分提取类DAYOFMONTH提取月中的第几天8、日期部分提取类DAYOFWEEK提取星期值8、日期部分提取类DAYOFYEAR提取年中的第几天8、日期部分提取类EXTRACT从日期 / 时间戳提取指定部分8、日期部分提取类HOUR提取小时8、日期部分提取类ISOYEAR提取 ISO 8601 年份8、日期部分提取类MINUTE提取分钟8、日期部分提取类MONTH提取月份8、日期部分提取类QUARTER提取季度8、日期部分提取类SECOND提取秒8、日期部分提取类WEEKDAY提取当前周第几天8、日期部分提取类WEEKOFYEAR提取当年第几周8、日期部分提取类YEAR提取年份9、月末 / 星期计算类LAST_DAY获取所在月最后一天返回字符串9、月末 / 星期计算类LASTDAY获取所在月最后一天返回DATETIME9、月末 / 星期计算类NEXT_DAY获取指定日期之后的下一个星期几10、日期校验类ISDATE判断字符串是否能按指定格式转成日期二、当前时间 / 时区类函数功能CURRENT_TIMESTAMP当前 TIMESTAMPCURRENT_TIMEZONE当前系统时区GETDATE当前 DATETIMENOW当前 DATETIME1、定义CURRENT_TIMESTAMP返回当前TIMESTAMP类型时间戳。CURRENT_TIMEZONE返回当前系统的时区信息。GETDATE返回当前系统时间类型为DATETIME。NOW返回当前系统日期与时间类型为DATETIME。2、区别对比区别CURRENT_TIMESTAMP返回TIMESTAMPGETDATE / NOW返回DATETIMECURRENT_TIMEZONE返回时区字符串不返回日期GETDATEvsNOW都获取当前时间NOW返回格式带毫秒部分MaxCompute 中GETDATE()在同一个 SQL 执行期间返回固定值。3、简单记忆CURRENT_TIMESTAMP 当前时间戳。CURRENT_TIMEZONE 当前时区。GETDATE / NOW 当前日期时间。4、案例-- 结果当前 TIMESTAMP例如 2026-09-27 16:30:00.123SELECTCURRENT_TIMESTAMP();-- 结果Asia/ShanghaiSELECTCURRENT_TIMEZONE();-- 结果当前系统 DATETIMESELECTGETDATE();-- 结果当前系统 DATETIME带毫秒SELECTNOW();三、日期加减类函数功能ADD_MONTHS加减月DATE_ADD加减天DATE_SUB减天DATEADD按指定单位加减TIME_ADDTIME 增加TIME_SUBTIME 减少1、定义ADD_MONTHS专门处理月份加减。DATE_ADD专门处理天数加减。DATE_SUB与DATE_ADD增减逻辑相反。DATEADD可以按年、月、日、时、分、秒修改日期。TIME_ADD对 TIME 时间增加指定幅度。TIME_SUB对 TIME 时间减少指定幅度。2、区别对比区别ADD_MONTHS专门处理月DATE_ADD / DATE_SUB只处理天DATEADD支持年、月、日、时、分、秒TIME_ADD / TIME_SUB针对一天内的 TIME而不是完整日期DATE_ADDvsDATE_SUB正数参数时一个加天一个减天3、简单记忆月ADD_MONTHS。天DATE_ADD / DATE_SUB。年月日时分秒DATEADD。纯时间TIME_ADD / TIME_SUB。4、案例-- 结果2017-05-14SELECTADD_MONTHS(2017-02-14,3);-- 结果2005-03-01SELECTDATE_ADD(DATE2005-02-28,1);-- 结果2005-02-28SELECTDATE_SUB(DATE2005-03-01,1);-- 结果2005-03-30 02:24:00SELECTDATEADD(DATETIME2005-03-30 05:24:00,-3,hh);-- 结果15:44:40SELECTFORMAT_TIME(TIME_ADD(TO_TIME(15:39:40,%H:%M:%S),5,mi),%H:%M:%S);-- 结果15:39:35SELECTFORMAT_TIME(TIME_SUB(TO_TIME(15:39:40,%H:%M:%S),5,second),%H:%M:%S);四、日期差值类函数功能DATEDIFF通用日期差MONTHS_BETWEEN月份差TIME_DIFFTIME 时间差1、定义DATEDIFF计算两个日期之间的差值并按指定单位返回。MONTHS_BETWEEN专门计算两个日期之间相差多少个月。TIME_DIFF计算两个 TIME 时间之间的差值。2、区别对比区别DATEDIFF通用支持日、时、分、秒等单位MONTHS_BETWEEN专门计算月数可返回小数TIME_DIFF专门针对 TIME3、简单记忆日期差DATEDIFF。月份差MONTHS_BETWEEN。TIME 差TIME_DIFF。4、案例-- 结果11SELECTDATEDIFF(DATE2013-05-21,DATE2013-05-10,dd);-- 结果-3.0SELECTMONTHS_BETWEEN(1996-09-30,1996-12-31);-- 结果10SELECTTIME_DIFF(TO_TIME(15,39,40),TO_TIME(15,39,30),second);五、格式转换类函数功能DATE_FORMAT日期转字符串TO_CHAR日期转字符串TO_DATE字符串转日期FORMAT_TIMETIME 转字符串1、定义DATE_FORMAT按照格式模板将日期转换成字符串。TO_CHAR按照指定格式将日期转换成字符串。TO_DATE把指定格式的字符串转换成日期。FORMAT_TIME将微秒表示的 TIME 格式化成字符串。2、区别对比区别DATE_FORMATvsTO_CHAR都是日期→字符串但支持类型和格式规则不同TO_DATE字符串→日期方向相反FORMAT_TIME专门处理 TIME 微秒值3、简单记忆日期变字符串DATE_FORMAT / TO_CHAR。字符串变日期TO_DATE。TIME 变字符串FORMAT_TIME。4、案例-- 结果2022-04-24SELECTDATE_FORMAT(2022-04-24,yyyy-MM-dd);-- 结果20080718SELECTTO_CHAR(DATETIME2008-07-18 00:00:00,yyyymmdd);-- 结果2008-07-18 00:00:00SELECTTO_DATE(20080718,yyyymmdd);-- 结果15:39:40SELECTFORMAT_TIME(TO_TIME(15:39:40,%H:%M:%S),%H:%M:%S);六、时间戳转换类函数功能FROM_UNIXTIMEUNIX 秒 → 日期UNIX_TIMESTAMP日期 → UNIX 秒TO_MILLIS日期 → UNIX 毫秒TO_TIME转 TIME 微秒值TO_TIMESTAMP_NTZ转无时区时间戳1、定义FROM_UNIXTIME把 UNIX 秒时间戳转换成日期。UNIX_TIMESTAMP把日期转换成 UNIX 秒时间戳。TO_MILLIS把日期转换成 UNIX 毫秒时间戳。TO_TIME把时间构造成从当天 00:00:00 开始累计的微秒值。TO_TIMESTAMP_NTZ把日期时间转换成无时区TIMESTAMP_NTZ。2、区别对比区别FROM_UNIXTIME秒时间戳 → 日期UNIX_TIMESTAMP日期 → 秒时间戳TO_MILLIS日期 → 毫秒时间戳TO_TIME表示一天中的时间单位为微秒TO_TIMESTAMP_NTZ得到无时区时间戳3、简单记忆FROM_UNIXTIME 时间戳回来。UNIX_TIMESTAMP 日期变秒。TO_MILLIS 日期变毫秒。TO_TIME 变 TIME。TO_TIMESTAMP_NTZ 变无时区时间戳。4、案例-- 结果1973-11-30 05:33:09SELECTFROM_UNIXTIME(123456789);-- 结果1699585860SELECTUNIX_TIMESTAMP(DATETIME2023-11-10 11:11:00);-- 结果1617174900000SELECTTO_MILLIS(DATETIME2021-03-31 15:15:00);-- 结果48273000000SELECTTO_TIME(13:24:33,%H:%M:%S);-- 结果2025-05-18 15:30:00SELECTTO_TIMESTAMP_NTZ(2025-05-18 15:30:00,%F %T);七、时区转换类函数功能FROM_UTC_TIMESTAMPUTC → 指定时区TO_UTC_TIMESTAMP指定时区 → UTC1、定义FROM_UTC_TIMESTAMP把 UTC 时间转换成指定时区时间。TO_UTC_TIMESTAMP把指定时区时间转换成 UTC。2、区别函数方向FROM_UTC_TIMESTAMPUTC → 指定时区TO_UTC_TIMESTAMP指定时区 → UTC3、简单记忆FROM UTC 从 UTC 出来。TO UTC 转到 UTC。4、案例-- 结果把 UTC 时间转换为 PSTSELECTFROM_UTC_TIMESTAMP(1501557840000,PST);-- 结果把 Asia/Shanghai 时间转换为 UTCSELECTTO_UTC_TIMESTAMP(TIMESTAMP2021-11-29 08:00:00,Asia/Shanghai);八、日期 / 时间截断类函数功能DATETRUNC日期截断TIME_TRUNCTIME 截断TRUNC_TIME截断后返回 STRING1、定义DATETRUNC把日期向下截断到指定日期粒度。TIME_TRUNC把 TIME 向下截断到指定时间粒度。TRUNC_TIME截断日期或时间后以字符串返回。2、区别对比区别DATETRUNC处理日期 / 时间戳TIME_TRUNC处理 TIME 微秒值TRUNC_TIME截断后返回 STRING更偏展示或维度字段3、简单记忆日期截断DATETRUNC。TIME 截断TIME_TRUNC。截完变字符串TRUNC_TIME。4、案例-- 结果2011-12-01 00:00:00SELECTDATETRUNC(DATETIME2011-12-07 16:28:46,month);-- 结果15:31:00SELECTFORMAT_TIME(TIME_TRUNC(TO_TIME(15:31:38.776,HH:MI:SS.ff3),MINUTE),%H:%M:%S);-- 结果2025-06SELECTTRUNC_TIME(DATE2025-06-10,month);九、日期部分提取类函数功能DATEPART通用日期部分提取EXTRACT标准语法提取日期部分YEAR年MONTH月DAY日DAYOFMONTH月中的第几天DAYOFWEEK星期DAYOFYEAR年中的第几天HOUR时MINUTE分SECOND秒QUARTER季度ISOYEARISO 年WEEKDAY周中的第几天WEEKOFYEAR年中的第几周1、定义这一类函数本质上都是从一个完整日期中提取某一个日期部分。DATEPART和EXTRACT是通用函数其余函数是固定字段的快捷写法。2、区别对比区别DATEPART时间单位以字符串参数传入EXTRACT使用EXTRACT(YEAR FROM date)语法YEAR / MONTH / DAY...固定提取某一部分最直接DAYvsDAYOFMONTH都表示月中的“日”DAYOFWEEKvsWEEKDAY都表示星期但编号体系不同ISOYEARvsYEARISO 周历年份 vs 普通日历年份WEEKOFYEAR返回当年第几周3、简单记忆通用提取DATEPART / EXTRACT。明确字段直接YEAR / MONTH / DAY / HOUR...。周相关DAYOFWEEK / WEEKDAY / WEEKOFYEAR / ISOYEAR。4、案例-- 结果2013SELECTDATEPART(DATETIME2013-06-08 01:10:00,yyyy);-- 结果2019SELECTEXTRACT(YEARFROMTIMESTAMP2019-05-01 11:21:00);-- 结果2026SELECTYEAR(DATETIME2026-09-27 15:30:45);-- 结果9SELECTMONTH(DATETIME2026-09-27 15:30:45);-- 结果27SELECTDAY(DATETIME2026-09-27 15:30:45);-- 结果27SELECTDAYOFMONTH(2026-09-27);-- 结果5SELECTDAYOFWEEK(2009-07-30);-- 结果270SELECTDAYOFYEAR(2026-09-27);-- 结果15SELECTHOUR(DATETIME2026-09-27 15:30:45);-- 结果30SELECTMINUTE(DATETIME2026-09-27 15:30:45);-- 结果45SELECTSECOND(DATETIME2026-09-27 15:30:45);-- 结果3SELECTQUARTER(2026-09-27);-- 结果2026SELECTISOYEAR(DATE2026-09-27);-- 结果4SELECTWEEKDAY(DATETIME2009-03-20 11:11:00);-- 结果39SELECTWEEKOFYEAR(2026-09-27);十、月末 / 星期计算类函数功能LAST_DAY月末返回 STRINGLASTDAY月末返回 DATETIMENEXT_DAY下一个指定星期1、定义LAST_DAY获取指定日期所在月最后一天。LASTDAY同样获取月末但返回DATETIME。NEXT_DAY获取大于指定日期且匹配目标星期的第一个日期。2、区别对比区别LAST_DAY返回STRING通常是yyyy-mm-ddLASTDAY返回DATETIME时间部分为00:00:00NEXT_DAY不是月末计算而是向后找目标星期3、简单记忆月末字符串LAST_DAY。月末 DATETIMELASTDAY。下一个星期几NEXT_DAY。4、案例-- 结果2017-03-31SELECTLAST_DAY(2017-03-04);-- 结果2013-06-30 00:00:00SELECTLASTDAY(DATETIME2013-06-08 01:10:00);-- 结果2017-08-08SELECTNEXT_DAY(2017-08-01,TU);十一、日期校验类函数功能ISDATE判断字符串是否符合指定日期格式1、定义ISDATE用于判断一个字符串是否能够按照指定格式转换成日期值。2、区别ISDATE只负责判断不会真正执行日期转换。常见组合先用ISDATE判断再用TO_DATE转换。3、简单记忆ISDATE “是不是合法日期”。4、案例-- 结果trueSELECTISDATE(2021-10-11,yyyy-mm-dd);十二、最容易混淆的函数对比函数组合最核心区别GETDATEvsNOW都返回 DATETIMENOW 展示毫秒更直观CURRENT_TIMESTAMPvsGETDATETIMESTAMP vs DATETIMEDATE_ADDvsDATE_SUB正数参数时加天 vs 减天DATE_ADDvsDATEADD只按天 vs 支持年月日时分秒ADD_MONTHSvsDATEADD专门按月 vs 多单位DATEDIFFvsMONTHS_BETWEEN通用日期差 vs 专门计算月份差DATE_FORMATvsTO_CHAR都是日期转字符串但支持类型 / 格式规则不同TO_CHARvsTO_DATE日期→字符串 vs 字符串→日期FROM_UNIXTIMEvsUNIX_TIMESTAMPUNIX 秒→日期 vs 日期→UNIX 秒UNIX_TIMESTAMPvsTO_MILLIS秒时间戳 vs 毫秒时间戳DATETRUNCvsTRUNC_TIME返回日期类型 vs 返回 STRINGDATETRUNCvsTIME_TRUNC完整日期截断 vs TIME 截断DATEPARTvsEXTRACT字符串单位参数 vs标准 EXTRACT 语法DAYvsDAYOFMONTH都表示月中的日DAYOFWEEKvsWEEKDAY都表示星期但编号规则不同YEARvsISOYEAR普通日历年 vs ISO 周历年LAST_DAYvsLASTDAY返回 STRING vs 返回 DATETIMEFROM_UTC_TIMESTAMPvsTO_UTC_TIMESTAMPUTC→指定时区 vs 指定时区→UTCTIME_ADDvsDATEADDTIME 运算 vs 完整日期时间运算ISDATEvsTO_DATE判断是否合法 vs 真正执行转换十三、常用案例1、获取昨天日期-- 结果当前日期的前一天SELECTDATEADD(GETDATE(),-1,dd)ASyesterday;2、获取业务日期 yyyyMMdd-- 结果例如 20260927SELECTTO_CHAR(GETDATE(),yyyymmdd)ASbiz_date;3、获取月份 yyyyMM-- 结果例如 202609SELECTTO_CHAR(GETDATE(),yyyymm)ASmonth_id;4、计算两个时间相差分钟数-- 结果30SELECTDATEDIFF(DATETIME2026-09-27 11:30:00,DATETIME2026-09-27 11:00:00,mi)ASdiff_min;5、13 位毫秒时间戳转日期-- 结果先将毫秒除以 1000再转 DATETIMESELECTFROM_UNIXTIME(CAST(1784822400000/1000ASBIGINT))ASdatetime_value;6、获取月末日期-- 结果2026-09-30SELECTLAST_DAY(2026-09-27)ASmonth_end;7、按月截断日期-- 结果2026-09-01 00:00:00SELECTDATETRUNC(DATETIME2026-09-27 15:30:45,month)ASmonth_start;8、字符串日期转换-- 结果2026-09-27 00:00:00SELECTTO_DATE(20260927,yyyymmdd)ASbiz_date;十四、参考资料阿里云 MaxCompute 官方文档https://help.aliyun.com/zh/maxcompute/date-functions
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

RK3568 上 OpenBMC 性能优化实战:从 CPU 调度到 DBus 通信的全面调优 2026/9/28 21:28:51

RK3568 上 OpenBMC 性能优化实战:从 CPU 调度到 DBus 通信的全面调优

1. 从"能跑"到"跑得稳":RK3568 上 OpenBMC 的性能瓶颈到底出在哪把 OpenBMC 在 RK3568 上点亮,只是万里长征第一步。真正让人头疼的,是系统起来之后那一连串"能用但不好用"的问题:Web 界面点一下卡…

阅读更多 →
分位数回归全链路实战:从Granger因果检验到QVAR脉冲响应 2026/9/28 21:28:50

分位数回归全链路实战:从Granger因果检验到QVAR脉冲响应

简介:本资源是一套基于Python与PyQt5开发的分位数回归分析完整项目,面向统计建模初学者、计量经济学课程设计者及毕业设计学生,解决传统均值回归无法刻画条件分布异质性的问题,覆盖分位数Granger因果检验、分位数向量自回归&#…

阅读更多 →
AI视觉项目初始化:Windows目录结构与工具链实战指南 2026/9/28 21:28:42

AI视觉项目初始化:Windows目录结构与工具链实战指南

1. 这不是一条命令,而是一份AI视觉项目启动的“现场手记”你看到的这行mkdir D:\模块Bcd /d D:\模块Bmkdir 任务一成果 任务二成果 任务三成果 任务四成果,表面看是Windows命令行里一串混乱的mkdir指令,甚至带点语法错误——它根本跑不通。但…

阅读更多 →
S7协议通信实战:从握手到数据读写的深度解析 2026/9/28 21:28:42

S7协议通信实战:从握手到数据读写的深度解析

1. 工控现场为什么要死磕S7协议搞工控的兄弟大多有过这种经历:产线上位机要采一批西门子PLC的数据,拿了个现成的库,连上能读,但偶尔断、偶尔慢、偶尔读回来的浮点数明显不对。翻日志只看到一句“连接超时”,剩下的全靠…

阅读更多 →
手写数字识别系统Python课设:CNN模型训练与部署指南 2026/9/28 21:28:21

手写数字识别系统Python课设:CNN模型训练与部署指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
ARTEMIS 视觉驱动移动端自动化:从架构到实战的完整指南 2026/9/28 21:28:14

ARTEMIS 视觉驱动移动端自动化:从架构到实战的完整指南

移动端自动化这个方向,过去几年一直有个尴尬的瓶颈:脚本能点、能滑、能截图,但一旦界面稍有变化,整套流程就崩了。传统方案靠的是控件树和固定坐标,本质上是在"背答案",而不是"理解题目&quo…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉