日期时间值函数
日期时间值函数用于返回一个时间点值。
date()
返回DATE
类型的值。
语法 | date([<param>]) |
||
参数 | 名称 | 类型 | 描述 |
<param> |
STRING 或RECORD |
日期字符串(指定格式)或包含字段year 、month 、day 的记录 |
|
返回类型 | DATE |
在不带参数调用时,date()
返回当前会话日期(如果未设置会话时区,则返回服务器日期),等价于CURRENT_DATE
。
RETURN date(), CURRENT_DATE
结果:
date() | CURRENT_DATE |
---|---|
2025-08-21 | 2025-08-21 |
参数需符合以下格式之一:
FOR value IN [
date("1993-05-09"),
date("19930509"),
date({year: 1993, month: 5, day: 9}),
date({year: 1993, month: 5}),
date({year: 1993})
]
RETURN value
结果:
value |
---|
1993-05-09 |
1993-05-09 |
1993-05-09 |
1993-05-01 |
1993-01-01 |
local_datetime()
返回LOCAL DATETIME
类型的值。
语法 | local_datetime([<param>]) |
||
参数 | 名称 | 类型 | 描述 |
<param> |
STRING 或RECORD |
日期时间字符串(指定格式)或包含以下字段的记录:year 、month 、day 、hour 、minute 、second ,以及millisecond (3位)、microsecond (6位)或nanosecond (9位)之一 |
|
返回类型 | LOCAL DATETIME |
在不带参数调用时,local_datetime()
返回当前会话日期时间(如果未设置会话时区,则返回服务器日期时间),等价于LOCAL_TIMESTAMP
。
RETURN local_datetime(), LOCAL_TIMESTAMP
结果:
local_datetime() | LOCAL_TIMESTAMP |
---|---|
2025-08-21 15:20:30.625790824 | 2025-08-21 15:20:30.625790824 |
参数需符合以下格式之一:
FOR value IN [
local_datetime("1993-05-09T03:02:11.70"),
local_datetime("1993-05-09 03:02:11.70"),
local_datetime("19930509T030211"),
local_datetime("19930509 030211"),
local_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2, second: 11, millisecond: 70}),
local_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2, second: 11, microsecond: 70}),
local_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2, second: 11, nanosecond: 70}),
local_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2, second: 11}),
local_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2}),
local_datetime({year: 1993, month: 5, day: 9, hour: 3})
]
RETURN value
结果:
value |
---|
1993-05-09 03:02:11.7 |
1993-05-09 03:02:11.7 |
1993-05-09 03:02:11 |
1993-05-09 03:02:11 |
1993-05-09 03:02:11.07 |
1993-05-09 03:02:11.00007 |
1993-05-09 03:02:11.00000007 |
1993-05-09 03:02:11 |
1993-05-09 03:02:00 |
1993-05-09 03:00:00 |
local_time()
返回LOCAL TIME
类型的值。
语法 | local_time([<param>]) |
||
参数 | 名称 | 类型 | 描述 |
<param> |
STRING 或RECORD |
时间字符串(指定格式)或包含以下字段的记录:hour 、minute 、second ,以及millisecond (3位)、microsecond (6位)或nanosecond (9位)之一 |
|
返回类型 | LOCAL TIME |
在不带参数调用时,local_time()
返回当前会话时间(如果未设置会话时区,则返回服务器时间)。
RETURN local_time()
结果:
local_time() |
---|
15:20:30.625790824 |
参数需符合以下格式之一:
FOR value IN [
local_time("03:02:11.70"),
local_time("030211.70"),
local_time("03:02:11"),
local_time("030211"),
local_time({hour: 3, minute: 2, second: 11, millisecond: 70}),
local_time({hour: 3, minute: 2, second: 11, microsecond: 70}),
local_time({hour: 3, minute: 2, second: 11, nanosecond: 70}),
local_time({hour: 3, minute: 2, second: 11}),
local_time({hour: 3, minute: 2}),
local_time({hour: 3})
]
RETURN value
结果:
value |
---|
03:02:11.7 |
03:02:11.7 |
03:02:11 |
03:02:11 |
03:02:11.07 |
03:02:11.00007 |
03:02:11.00000007 |
03:02:11 |
03:02:00 |
03:00:00 |
now()
返回协调世界时(UTC)下当前日期和时间。
语法 | now() |
返回类型 | DATETIME |
RETURN now()
结果:
now() |
---|
2025-08-21 09:20:30.625790824 |
zoned_datetime()
返回ZONED DATETIME
类型的值。
语法 | zoned_datetime([<param>]) |
||
参数 | 名称 | 类型 | 描述 |
<param> |
STRING 或RECORD |
日期时间字符串(指定格式)或包含以下字段的记录:year 、month 、day 、hour 、minute 、second ,以及millisecond (3位)、microsecond (6位)或nanosecond (9位)之一,和timezone |
|
返回类型 | ZONED DATETIME |
在不带参数调用时,zoned_datetime()
返回当前会话日期时间(如果未设置会话时区,则返回服务器日期时间),等价于CURRENT_TIMESTAMP
。
RETURN zoned_datetime(), CURRENT_TIMESTAMP
结果:
zoned_datetime() | CURRENT_TIMESTAMP |
---|---|
2025-08-21 15:20:30.625790824-0600 | 2025-08-21 15:20:30.625790824-0600 |
参数需符合以下格式之一:
FOR value IN [
zoned_datetime("1993-05-09T03:02:11.70-0600"),
zoned_datetime("1993-05-09 03:02:11.70-06:00"),
zoned_datetime("19930509T030211-06:00"),
zoned_datetime("19930509 030211-0600"),
zoned_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2, second: 11, millisecond: 70, timezone: -0600}),
zoned_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2, second: 11, microsecond: 70, timezone: -0600}),
zoned_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2, second: 11, nanosecond: 70, timezone: -0600}),
zoned_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2, second: 11, timezone: -0600}),
zoned_datetime({year: 1993, month: 5, day: 9, hour: 3, minute: 2, timezone: -0600}),
zoned_datetime({year: 1993, month: 5, day: 9, hour: 3, timezone: -0600})
]
RETURN value
结果:
value |
---|
1993-05-09 03:02:11.7-0600 |
1993-05-09 03:02:11.7-0600 |
1993-05-09 03:02:11-0600 |
1993-05-09 03:02:11-0600 |
1993-05-09 03:02:11.07-0600 |
1993-05-09 03:02:11.00007-0600 |
1993-05-09 03:02:11.00000007-0600 |
1993-05-09 03:02:11-0600 |
1993-05-09 03:02:00-0600 |
1993-05-09 03:00:00-0600 |
zoned_time()
返回ZONED TIME
类型的值。
语法 | zoned_time([<param>]) |
||
参数 | 名称 | 类型 | 描述 |
<param> |
STRING 或RECORD |
时间字符串(指定格式)或包含以下字段的记录:hour 、minute 、second ,以及millisecond (3位)、microsecond (6位)或nanosecond (9位)之一,和timezone |
|
返回类型 | ZONED TIME |
在不带参数调用时,zoned_time()
返回当前会话时间(如果未设置会话时区,则返回服务器时间),等价于CURRENT_TIME
。
RETURN zoned_time(), CURRENT_TIME
结果:
zoned_time() | CURRENT_TIME |
---|---|
15:20:30.625790824-0600 | 15:20:30.625790824-0600 |
参数需符合以下格式之一:
FOR value IN [
zoned_time("03:02:11.70-06:00"),
zoned_time("030211.70-0600"),
zoned_time("03:02:11-06:00"),
zoned_time("030211-0600"),
zoned_time({hour: 3, minute: 2, second: 11, millisecond: 70, timezone: "-0600"}),
zoned_time({hour: 3, minute: 2, second: 11, microsecond: 70, timezone: "-0600"}),
zoned_time({hour: 3, minute: 2, second: 11, nanosecond: 70, timezone: "-0600"}),
zoned_time({hour: 3, minute: 2, second: 11, timezone: "-0600"}),
zoned_time({hour: 3, minute: 2, timezone: "-0600"}),
zoned_time({hour: 3, timezone: "-0600"})
]
RETURN value
结果:
value |
---|
03:02:11.7-0600 |
03:02:11.7-0600 |
03:02:11-0600 |
03:02:11-0600 |
03:02:11.07-0600 |
03:02:11.00007-0600 |
03:02:11.00000007-0600 |
03:02:11-0600 |
03:02:00-0600 |
03:00:00-0600 |
其他时间函数
dateAdd()
向给定日期添加指定的时间间隔。
语法 | dateAdd(<time>, <interval>, <unit>) |
||
参数 | 名称 | 类型 | 描述 |
<time> |
时间 | 初始时间 | |
<interval> |
INT |
时间偏移量(正值表示增加,负值表示减去) | |
<unit> |
STRING |
时间偏移量的单位,包括year 、month 、day 、hour 、minute 和second |
|
返回类型 | DATETIME |
RETURN dateAdd("1970-1-1", -1, "hour") as newTime
结果:
newTime |
---|
1969-12-31 23:00:00 |
RETURN dateAdd("1970-1-1", 10, "year")
结果:
newTime |
---|
1980-01-01 00:00:00 |
dateDiff()
计算两个日期间的时间间隔(time1
-time2
),并以指定时间单位返回结果。
语法 | dateAdd(<time1>, <time2>, <unit>) |
||
参数 | 名称 | 类型 | 描述 |
<endTime> |
时间 | 第一个时间 | |
<time2> |
时间 | 第二个时间 | |
<unit> |
STRING |
时间间隔单位,包括day 、hour 、minute 和second |
|
返回类型 | DATETIME |
RETURN dateDiff("1970-01-01 10:00:00", "1970-01-01 12:00:20", "minute") as diff
结果:
diff |
---|
-120 |
dateFormat()
根据指定格式打印给定日期。
语法 | dateFormat(<time>, <formatCode>) |
||
参数 | 名称 | 类型 | 描述 |
<time> |
时间 | 输入的时间 | |
<formatCode> |
STRING |
格式代码 | |
返回类型 | STRING |
格式代码:
代码 |
描述 |
示例/范围 |
---|---|---|
%a |
系统语言环境下,星期名称简写 | (en_US) Sun, Mon |
%A |
系统语言环境下,星期名称全称 | (en_US) Sunday, Monday |
%b |
系统语言环境下,月份名称简写 | (en_US) Jan, Feb |
%B |
系统语言环境下,月份名称全称 | (en_US) January, February |
%c |
系统默认的日期和时间格式 | Wed Jan 11 10:59:28 2023 |
%C |
世纪数(年/100),以两位数字表示 | 00, 01, ..., 99 |
%d |
某月的第几天(补零) | 01, 02, ..., 31 |
%D |
相当于%m/%d/%y |
01/11/23 |
%e |
某月的第几天 | 1, 2, ..., 31 |
%Ez |
时区 | +08:00 |
%g |
年份后两位 | 00, 01, ..., 99 |
%G |
四位数年份 | 0000, 0001, ..., 9999 |
%h |
相当于%b |
同%b |
%H |
使用24小时制的小时数(补零) | 00, 01, ..., 23 |
%I |
使用12小时制的小时数(补零) | 01, 02, ..., 12 |
%j |
一年中的第几天(补零) | 001, 002, ..., 366 |
%m |
月份数字(补零) | 01, 02, ..., 12 |
%M |
分钟数(补零) | 00, 01, ..., 59 |
%n |
换行符 | |
%p |
根据给定时间值返回AM或PM | (en_US) AM, PM |
%P |
根据给定时间值返回am或pm | (en_US) am, pm |
%r |
相当于%I/%M/%S %p |
01:49:23 AM |
%R |
相当于%H:%M |
13:49 |
%S |
秒数(补零) | 00, 01, ..., 59 |
%t |
制表符 | |
%T |
相当于%H:%M:%S |
23:02:05 |
%u |
星期几的数字表示,星期一为1(在Sun Solaris系统中,星期日为1) | 1, 2, ..., 7 |
%U |
一年中的第几周(补零),一年中的第一个星期日记作第01周的第一天,此前的日子记作第00周 | 00, 01, ..., 53 |
%V |
一年中的第几周(补零),星期一记为每周的第一天,第01周需在当年至少有4天 | 01, 02, ..., 53 |
%W |
一年中的第几周(补零),从一年中的第一个星期一开始记作第01周,此前的日子记作第00周 | 00, 01, ..., 53 |
%w |
一周的第几天,0为星期日 | 0, 1, ..., 6 |
%x |
系统默认的日期格式 | 01/11/23 |
%X |
系统默认的时间格式 | 06:38:45 |
%y |
相当于%g |
See %g |
%Y |
相当于%G |
See %G |
%z |
UTC偏移量,格式为±HHMM[SS] |
+0000, -0400, +1030, ... |
%Z |
时区名称 | GMT, UTC, IST, CST, ... |
%% |
%字符 | % |
RETURN dateFormat("2010/9/25 6:12:30","%A %e %B, %G") as newFormat
结果:
newFormat |
---|
Saturday 25 September, 2010 |
dayOfWeek()
返回一个数字(从1
到7
,其中1
为星期日,7
为星期六),表示给定日期对应的星期几。
语法 | dayOfWeek(<time>) |
||
参数 | 名称 | 类型 | 描述 |
<time> |
时间 | 输入的时间 | |
返回类型 | UINT |
RETURN dayOfWeek("2024-12-5")
结果:
dayOfWeek("2024-12-5") |
---|
5 |
日期时间字符串格式
日期字符串
- 格式:
yyyy-mm-dd
或yyyymmdd
- 范围:
-9999-12-31
到9999-12-31
时间字符串
- 格式:
hh:mm:ss[.fraction]
或hhmmss[.fraction]
- 范围:
00:00:00.000000000
到23:59:59.999999999
日期时间字符串
- 格式:日期字符串和时间字符串由空格或字母
T
连接 - 范围:
-9999-01-01 00:00:00.000000000
到9999-12-31 23:59:59.999999999
时区字符串
- 格式:表示为UTC偏移量,格式为
±hh:mm
或±hhmm
,直接附加在时间值后 - 范围:
UTC-15:00
到UTC+15:00