Europe/Amsterdam。在这种情况下,使用的时区将是指定的时区,而不是本地 (默认) 时区。
示例
为兼容 SQL 标准,以下函数
NOW、CURRENT_TIMESTAMP、LOCALTIME、LOCALTIMESTAMP、TODAY 和 CURRENT_DATE 可在不加括号的情况下使用。UTCTimestamp
now('UTC') 相同。添加它仅是为了支持 MySQL。推荐使用 now。
语法
UTC_timestamp
参数
- 无。
DateTime
示例
获取当前 UTC 时间戳
Query
Response
YYYYMMDDToDate
Date。
此函数与 toYYYYMMDD() 的作用相反。
如果输入未编码出有效的 Date 值,则输出结果未定义。
语法
Date 值 Date
示例
示例
Query
Response
YYYYMMDDToDate32
Date32。
此函数与 toYYYYMMDD() 函数相反。
如果输入未编码为有效的 Date32 值,则输出结果未定义。
语法
Date32 值 Date32
示例
示例
Query
Response
YYYYMMDDhhmmssToDateTime
DateTime。
此函数与 toYYYYMMDDhhmmss() 的作用相反。
如果输入未编码为有效的 DateTime 值,则输出结果未定义。
语法
DateTime 值。DateTime
示例
示例
Query
Response
YYYYMMDDhhmmssToDateTime64
DateTime64。
此函数与 toYYYYMMDDhhmmss() 函数的作用相反。
如果输入未编码为有效的 DateTime64 值,则输出结果未定义。
语法
YYYYMMDDhhmmss— 包含年、月、日、时、分、秒的数值。(U)Int*或Float*或Decimalprecision— 小数部分精度 (0-9) 。UInt8timezone— 时区名称。String
DateTime64 值。DateTime64
示例
示例
Query
Response
addDate
datetime— 要添加interval的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringinterval— 要添加的时间间隔。Interval
interval 添加到 datetime 后得到的日期或日期时间。Date 或 Date32 或 DateTime 或 DateTime64
示例
为日期添加时间间隔
Query
Response
addDays
datetime— 要在其基础上增加指定天数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要增加的天数。(U)Int*或Float*
datetime 加上 num 天后的结果。Date 或 Date32 或 DateTime 或 DateTime64
示例
为不同的日期类型增加天数
Query
Response
Query
Response
addHours
datetime— 要添加指定小时数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的小时数。(U)Int*或Float*
datetime 加上 num 小时后的结果:DateTime 或 DateTime64(3)
示例
为不同日期类型添加小时
Query
Response
Query
Response
addInterval
相同类型的时间间隔会合并成一个时间间隔。例如,如果传入
toIntervalDay(1) 和 toIntervalDay(2),则结果将是 (3),而不是 (1,1)。interval_1— 第一个时间间隔或由多个时间间隔组成的 Tuple。Interval或Tuple(Interval)interval_2— 要相加的第二个时间间隔。Interval
Tuple(Interval)
示例
时间间隔相加
Query
Response
addMicroseconds
datetime— 要添加指定微秒数的日期时间。DateTime或DateTime64或Stringnum— 要添加的微秒数。(U)Int*或Float*
date_time 加上 num 微秒后的结果。DateTime64
示例
为不同的日期时间类型添加微秒
Query
Response
Query
Response
addMilliseconds
datetime— 要加上指定毫秒数的日期时间。DateTime或DateTime64或Stringnum— 要添加的毫秒数。(U)Int*或Float*
num 毫秒后的 datetime。DateTime64
示例
为不同的日期时间类型添加毫秒
Query
Response
Query
Response
addMinutes
datetime— 要添加指定分钟数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的分钟数。(U)Int*或Float*
datetime 加上 num 分钟后的值。DateTime 或 DateTime64(3)
示例
为不同日期类型添加分钟
Query
Response
Query
Response
addMonths
datetime— 要加上指定月数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的月数。(U)Int*或Float*
datetime 加上 num 个月后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
向不同日期类型添加月份
Query
Response
Query
Response
addNanoseconds
datetime— 要添加指定纳秒数的日期时间。DateTime或DateTime64或Stringnum— 要添加的纳秒数。(U)Int*或Float*
datetime 加上 num 纳秒后的结果,类型为 DateTime64
示例
为不同的日期时间类型添加纳秒
Query
Response
Query
Response
addQuarters
datetime— 要添加指定季度数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的季度数。(U)Int*或Float*
datetime 基础上加上 num 个季度后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
为不同的日期类型添加季度
Query
Response
Query
Response
addSeconds
datetime— 要加上指定秒数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的秒数。(U)Int*或Float*
datetime 加上 num 秒后的值。DateTime 或 DateTime64(3)
示例
为不同日期类型添加秒数
Query
Response
Query
Response
addTupleOfIntervals
datetime— 要添加时间间隔的日期或日期时间。Date或Date32或DateTime或DateTime64intervals— 要添加到datetime的时间间隔 Tuple。Tuple(Interval)
intervals 后的 date。Date 或 Date32 或 DateTime 或 DateTime64
示例
将时间间隔 Tuple 添加到日期
Query
Response
addWeeks
datetime— 要添加指定周数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的周数。(U)Int*或Float*
datetime 加上 num 周后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
为不同日期类型添加周数
Query
Response
Query
Response
addYears
datetime— 要添加指定年数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的年数。(U)Int*或Float*
datetime 加上 num 年后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
为不同日期类型添加年份
Query
Response
Query
Response
age
startdate 与 enddate 之间差值中对应单位的分量。
该差值按 1 纳秒精度计算。
例如,2021-12-29 与 2022-01-01 之间的差值,按 day 单位计算为 3 天,
按 month 单位计算为 0 个月,按 year 单位计算为 0 年。
有关 age 的替代方案,请参见函数 dateDiff。
语法
unit— 结果的时间间隔类型。
startdate— 相减时的第一个时间值 (减数) 。Date或Date32或DateTime或DateTime64enddate— 相减时的第二个时间值 (被减数) 。Date或Date32或DateTime或DateTime64timezone— 可选。时区名称。如果指定,则同时应用于 startdate 和 enddate。如果未指定,则使用 startdate 和 enddate 各自的时区。如果两者不一致,则结果未定义。String
Int32
示例
按小时计算年龄
Query
Response
Query
Response
changeDay
date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、但日期部分已修改的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
使用示例
Query
Response
changeHour
date_or_datetime— 要更改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、但小时部分已修改的值。DateTime 或 DateTime64
示例
使用示例
Query
Response
changeMinute
日期或日期时间 的分钟部分。
语法
date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、分钟部分已修改的值。DateTime 或 DateTime64
示例
使用示例
Query
Response
changeMonth
date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、月份部分已修改的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
使用示例
Query
Response
changeSecond
date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、但秒部分已被修改的值。DateTime 或 DateTime64
示例
使用示例
Query
Response
changeYear
date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、但年份部分已修改的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
使用示例
Query
Response
dateDiff
startdate 与 enddate 之间跨过的指定 unit 边界数。
该差值按相对单位计算。例如,对于单位 day,2021-12-29 与 2022-01-01 之间相差 3 天
(参见 toRelativeDayNum) ;对于单位 month,相差 1 个月 (参见 toRelativeMonthNum) ;对于单位 year,相差 1 年
(参见 toRelativeYearNum) 。
如果指定单位为 week,则 dateDiff 假定每周从星期一开始。
请注意,这一行为与函数 toWeek() 不同,后者默认将星期日视为每周的开始。
如需 dateDiff 的替代方案,请参见函数 age。
语法
timestampDiff, TIMESTAMP_DIFF, DATE_DIFF, date_diff, timestamp_diff
参数
unit— 结果所使用的时间间隔类型。
startdate— 要相减的第一个时间值 (减数) 。Date或Date32或DateTime或DateTime64enddate— 要减去第一个时间值的第二个时间值 (被减数) 。Date或Date32或DateTime或DateTime64timezone— 可选。时区名称。如果指定,则同时应用于startdate和enddate。如果未指定,则使用startdate和enddate各自的时区。如果两者不一致,则结果未指定。String
enddate 与 startdate 之间以 unit 表示的差值。Int64
示例
按小时计算日期差值
Query
Response
Query
Response
dateName
- ‘year’
- ‘quarter’
- ‘month’
- ‘week’
- ‘dayofyear’
- ‘day’
- ‘weekday’
- ‘hour’
- ‘minute’
- ‘second’
date_part— 要提取的日期部分。Stringdatetime— 日期或日期时间值。Date或Date32或DateTime或DateTime64timezone— 可选。时区。String
String
示例
提取不同的日期部分
Query
Response
dateTrunc
DATE_TRUNC
参数
unit— 用于截断结果的时间间隔类型。可能的值:nanosecond(仅限 DateTime64) 、microsecond(仅限 DateTime64) 、millisecond(仅限 DateTime64) 、second、minute、hour、day、week、month、quarter、year。Stringdatetime— 日期和时间。Date或Date32或DateTime或DateTime64timezone— 可选。返回的日期时间使用的时区名称。如未指定,函数将使用datetime参数的时区。String
示例
不指定时区进行截断
Query
Response
Query
Response
formatDateTime
format 是一个常量表达式,因此单个结果列不能使用多种格式。
formatDateTime 使用 MySQL 日期时间格式,参见 mysql docs。
此函数的反向操作是 parseDateTime。
使用替换字段,你可以为结果字符串定义模式。
下表中的示例列展示了 2018-01-02 22:33:44 的格式化结果。
替换字段:
- 在早于 v23.4 的 ClickHouse 版本中,如果格式化的值是 Date、Date32、DateTime (它们不包含秒的小数部分) 或 precision 为 0 的 DateTime64,
%f会输出单个零 (0) 。 - 在早于 v25.1 的 ClickHouse 版本中,
%f输出的位数会与 DateTime64 的 标度 指定的位数一致,而不是固定为 6 位。 - 在早于 v23.4 的 ClickHouse 版本中,
%M输出的是分钟 (00-59) ,而不是完整月份名称 (January-December) 。
DATE_FORMAT
参数
datetime— 要格式化的日期或日期时间值。Date或Date32或DateTime或DateTime64format— 包含替换字段的格式字符串。Stringtimezone— 可选。格式化后时间使用的时区名称。String
String
示例
使用年份占位符格式化日期
Query
Response
Query
Response
Query
Response
formatDateTimeInJodaSyntax
formatDateTime 类似,不同之处在于它使用 Joda 风格而不是 MySQL 风格来格式化日期时间。请参阅 Joda Time 文档。
此函数的反向操作是 parseDateTimeInJodaSyntax。
使用替换字段,可以为结果字符串定义模式。
替换字段:
语法
datetime— 要格式化的日期或日期时间值。DateTime或Date或Date32或DateTime64format— 使用 Joda 语法替换字段的格式字符串。Stringtimezone— 可选。格式化时间所用的时区名称。String
String
示例
使用 Joda 语法格式化日期时间
Query
Response
fromDaysSinceYearZero
FROM_DAYS() 函数相同。如果结果无法表示在 Date 类型的取值范围内,则结果未定义。
语法
FROM_DAYS
参数
days— 自零年开始经过的天数。UInt32
Date
示例
将自零年开始经过的天数转换为日期
Query
Response
fromDaysSinceYearZero32
FROM_DAYS() 函数相同。如果结果无法在 Date32 类型的取值范围内表示,则结果未定义。
语法
days— 自零年起累计经过的天数。UInt32
Date32
示例
将自零年起累计经过的天数转换为日期
Query
Response
fromModifiedJulianDay
YYYY-MM-DD。此函数支持的日数范围为 -678941 到 2973483 (分别表示 0000-01-01 和 9999-12-31) 。如果日数超出支持范围,则会引发异常。
语法
day— 修正儒略日编号。(U)Int*
String
示例
将修正儒略日转换为日期
Query
Response
fromModifiedJulianDayOrNull
fromModifiedJulianDay() 类似,但它不会抛出异常,而是返回 NULL。
语法
day— 修正儒略日编号。(U)Int*
day 参数有效,则以文本形式返回日期;否则返回 null。Nullable(String)
示例
将修正儒略日转换为日期,并处理 null 值
Query
Response
fromUTCTimestamp
from_utc_timestamp
参数
datetime— 日期或日期时间常量值,或表达式。DateTime或DateTime64time_zone— String 类型的常量值,或表示时区的表达式。String
DateTime 或 DateTime64
示例
将 UTC 时区转换为指定时区
Query
Response
fromUnixTimestamp
- 当给定一个类型为
Integer的单个参数时,返回类型为DateTime的值,即其行为类似于toDateTime。 - 当给定两个或三个参数时,第一个参数为
Integer、Date、Date32、DateTime或DateTime64类型的值,第二个参数为常量格式字符串,第三个参数为可选的常量时区字符串,此函数返回类型为String的值,即其行为类似于formatDateTime。 在这种情况下,使用 MySQL 的日期时间格式。
FROM_UNIXTIME
参数
timestamp— Unix 时间戳或日期/日期时间值。(U)Int*或Date或Date32或DateTime或DateTime64format— 可选。用于输出格式化的常量格式字符串。Stringtimezone— 可选。常量时区字符串。String
DateTime;传入两个或三个参数时,返回 String。DateTime 或 String
示例
将 Unix 时间戳转换为 DateTime
Query
Response
Query
Response
fromUnixTimestampInJodaSyntax
Integer 的单个参数时,返回类型为 DateTime 的值,即其行为类似于 toDateTime。
当给定两个或三个参数,且第一个参数是类型为 Integer、Date、Date32、DateTime 或 DateTime64 的值,第二个参数是常量格式字符串,第三个参数是可选的常量时区字符串时,该函数返回类型为 String 的值,即其行为类似于 formatDateTimeInJodaSyntax。在这种情况下,使用 Joda 日期时间格式样式。
语法
timestamp— Unix 时间戳或日期时间值。(U)Int*或Date或Date32或DateTime或DateTime64format— 可选。使用 Joda 语法进行输出格式化的常量格式字符串。Stringtimezone— 可选。常量时区字符串。String
DateTime 或 String
示例
使用 Joda 格式转换 Unix 时间戳
Query
Response
localtime
LOCALTIME,等价于 CAST(now() AS Time)。
语法
- 无。
Time
示例
不带括号的 SQL 标准语法
Query
Response
makeDate
Date:
- 年、月、日
- 年和一年中的第几天
year— 年份。(U)Int*或Float*或Decimalmonth— 月份 (1-12) 。(U)Int*或Float*或Decimalday— 月中的第几天 (1-31) 。(U)Int*或Float*或Decimalday_of_year— 一年中的第几天 (1-365) 。(U)Int*或Float*或Decimal
Date 值 Date
示例
根据年、月、日构造日期
Query
Response
Query
Response
makeDate32
Date32:
- 年、月、日
- 年和一年中的第几天
year— 年份编号。(U)Int*或Float*或Decimalmonth— 月份编号 (1-12) 。(U)Int*或Float*或Decimalday— 一个月中的日期 (1-31) 。(U)Int*或Float*或Decimalday_of_year— 一年中的第几天 (1-365) 。(U)Int*或Float*或Decimal
Date32 值 Date32
示例
由年、月、日构造 Date32
Query
Response
Query
Response
makeDateTime
DateTime,并可选指定 timezone。
语法
year— 年份 (数值) 。(U)Int*或Float*或Decimalmonth— 月份 (1-12) 。(U)Int*或Float*或Decimalday— 月中的日期 (1-31) 。(U)Int*或Float*或Decimalhour— 小时 (0-23) 。(U)Int*或Float*或Decimalminute— 分钟 (0-59) 。(U)Int*或Float*或Decimalsecond— 秒 (0-59) 。(U)Int*或Float*或Decimaltimezone— 时区名称。String
DateTime 值 DateTime
示例
根据 year、month、day、hour、minute、second 构造 DateTime
Query
Response
makeDateTime64
DateTime64,并可选指定 fraction、precision 和 timezone。
语法
year— 年份。(U)Int*或Float*或Decimalmonth— 月份 (1-12) 。(U)Int*或Float*或Decimalday— 一个月中的第几天 (1-31) 。(U)Int*或Float*或Decimalhour— 小时 (0-23) 。(U)Int*或Float*或Decimalminute— 分钟 (0-59) 。(U)Int*或Float*或Decimalsecond— 秒 (0-59) 。(U)Int*或Float*或Decimalfraction— 秒的小数部分。(U)Int*或Float*或Decimalprecision— 小数部分的精度 (0-9) 。UInt8timezone— 时区名称。String
DateTime64 值 DateTime64
示例
通过 year、month、day、hour、minute、second 构造 DateTime64
Query
Response
monthName
datetime— 日期或日期时间。Date或Date32或DateTime或DateTime64
String
示例
从日期中获取月份名称
Query
Response
now
localtimestamp, current_timestamp
参数
timezone— 可选。返回值所用的时区名称。String
DateTime
示例
不带时区的查询
Query
Response
Query
Response
Query
Response
now64
scale— 可选。时间粒度 (precision) 为 10^-precision 秒。有效范围:[0 : 9]。通常使用 3 (默认,毫秒) 、6 (微秒) 或 9 (纳秒) 。UInt8timezone— 可选。用于返回值的时区名称。String
DateTime64
示例
使用默认精度和自定义精度的查询
Query
Response
nowInBlock
now 不同,它不是常量表达式,因此对于运行时间较长的查询,不同块中的返回值会不同。
在运行时间较长的 INSERT SELECT 查询中,使用此函数生成当前时间是合理的。
语法
timezone— 可选。返回值所用的时区名称。String
DateTime
示例
与 now() 函数的区别
Query
Response
nowInBlock64
scale— 可选。时间粒度 (precision) :10^-precision 秒。有效范围:[0 : 9]。通常使用 3 (默认,毫秒) 、6 (微秒) 或 9 (纳秒) 。UInt8timezone— 可选。返回值的时区名称。String
DateTime64
示例
与 now64() 函数的区别
Query
Response
serverTimezone
timezone 设置的值。
如果该函数是在分布式表的上下文中执行的,则会生成一个普通列,其值对应各个分片。否则,会生成一个常量值。
语法
serverTimeZone
参数
- 无。
String
示例
使用示例
Query
Response
subDate
datetime— 要从中减去interval的日期或日期时间。Date或Date32或DateTime或DateTime64interval— 要减去的时间间隔。Interval
datetime 中减去 interval 后得到的日期或日期时间。Date 或 Date32 或 DateTime 或 DateTime64
示例
从日期中减去时间间隔
Query
Response
subtractDays
datetime— 要从中减去指定天数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的天数。(U)Int*或Float*
datetime 减去 num 天后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去天数
Query
Response
Query
Response
subtractHours
datetime— 要从中减去指定小时数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的小时数。(U)Int*或Float*
datetime 减去 num 小时后的结果。DateTime 或 DateTime64(3)
示例
对不同日期类型减去小时数
Query
Response
Query
Response
subtractInterval
toIntervalDay(2) 和 toIntervalDay(1),
那么结果将是 (1),而不是 (2,1)。
语法
interval_1— 第一个时间间隔,或由时间间隔组成的 Tuple。Interval或Tuple(Interval)interval_2— 将被取反的第二个时间间隔。Interval
Tuple(T)
示例
时间间隔相减
Query
Response
subtractMicroseconds
datetime— 要减去指定微秒数的日期时间。DateTime或DateTime64或Stringnum— 要减去的微秒数。(U)Int*或Float*
datetime 减去 num 微秒后的结果:DateTime64
示例
对不同的日期时间类型减去微秒
Query
Response
Query
Response
subtractMilliseconds
datetime— 要减去指定毫秒数的日期时间。DateTime或DateTime64或Stringnum— 要减去的毫秒数。(U)Int*或Float*
datetime 减去 num 毫秒后的结果。DateTime64
示例
从不同的日期时间类型中减去毫秒
Query
Response
Query
Response
subtractMinutes
datetime— 要从中减去指定分钟数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的分钟数。(U)Int*或Float*
datetime 减去 num 分钟后的值。DateTime 或 DateTime64(3)
示例
从不同日期类型中减去分钟
Query
Response
Query
Response
subtractMonths
datetime— 要从中减去指定月数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的月数。(U)Int*或Float*
datetime 减去 num 个月后的结果。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去月份
Query
Response
Query
Response
subtractNanoseconds
datetime— 要减去指定纳秒数的日期时间。DateTime或DateTime64或Stringnum— 要减去的纳秒数。(U)Int*或Float*
datetime 减去 num 纳秒后的结果。DateTime64
示例
从不同的日期时间类型中减去纳秒
Query
Response
Query
Response
subtractQuarters
datetime— 要从中减去指定季度数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的季度数。(U)Int*或Float*
datetime 减去 num 个季度后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去季度
Query
Response
Query
Response
subtractSeconds
datetime— 要从中减去指定秒数的日期或日期时间值。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的秒数。(U)Int*或Float*
datetime 减去 num 秒后的结果:DateTime 或 DateTime64(3)
示例
从不同日期类型中减去秒数
Query
Response
Query
Response
subtractTupleOfIntervals
datetime— 要从中减去时间间隔的日期或日期时间。Date或Date32或DateTime或DateTime64intervals— 要从datetime中减去的时间间隔 Tuple。Tuple(Interval)
intervals 后的 date。Date 或 Date32 或 DateTime 或 DateTime64
示例
从日期中减去时间间隔 Tuple
Query
Response
subtractWeeks
datetime— 要从中减去指定周数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的周数。(U)Int*或Float*
datetime 减去 num 周后的结果。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去周数
Query
Response
Query
Response
subtractYears
datetime— 从中减去指定年数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的年数。(U)Int*或Float*
datetime 减去 num 年后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去年数
Query
Response
Query
Response
timeDiff
enddate - startdate 计算。
该函数等同于 dateDiff('second', startdate, enddate)。
如需计算其他单位 (小时、天、月等) 的时间差,请改用 dateDiff 函数。
Syntax
startdate— 第一个被相减的时间值 (减数) 。Date或Date32或DateTime或DateTime64enddate— 第二个时间值,即从中减去startdate的值 (被减数) 。Date或Date32或DateTime或DateTime64
enddate 与 startdate 之间的差值,以秒表示。Int64
示例
计算以秒为单位的时间差
Query
Response
Query
Response
Query
Response
timeSlot
尽管此函数可以接受扩展类型
Date32 和 DateTime64 的值作为参数,
但如果传入超出正常范围的时间 (Date 为 1970 年至 2149 年 / DateTime 为 2106 年) ,则会产生错误结果。time— 要向下取整到半小时时间间隔起始点的时间。DateTime或Date32或DateTime64time_zone— 可选。String 类型的常量值,或表示时区的表达式。String
DateTime
示例
将时间向下取整到半小时时间间隔
Query
Response
timeSlots
StartTime 开始、持续 Duration 秒的时间间隔,它会返回一个时间点数组,其中包含该区间内按 Size 秒向下取整后的各个时间点。Size 是可选参数,默认值为 1800 (30 分钟) 。
例如,在对应的会话中搜索页面浏览量时,就需要用到它。
对于 DateTime64,返回值的标度可以与 StartTime 的标度不同。将采用所有给定参数中的最高标度。
语法
StartTime— 时间区间的起始时间。DateTime或DateTime64Duration— 时间区间的持续时间,以秒为单位。UInt32或DateTime64Size— 可选。时间槽的大小,以秒为单位。默认值为 1800 (30 分钟) 。UInt32或DateTime64
StartTime 的类型一致) 。对于 DateTime64,返回值的标度可能与 StartTime 的标度不同——将采用所有给定参数中的最高标度。Array(DateTime) 或 Array(DateTime64)
示例
为一个时间区间生成时间槽
Query
Response
timestamp
expr 转换为 DateTime64(6) 类型。
如果提供了第二个参数 expr_time,则会将指定时间加到转换后的值上。
语法
expr 转换后的值,或加上时间后的 expr DateTime64(6)
示例
将日期字符串转换为 DateTime64(6)
Query
Response
Query
Response
timezone
timeZone
参数
- 无。
String
示例
用法示例
Query
Response
timezoneOf
DateTime 或 DateTime64 值的时区名称。
语法
timeZoneOf
参数
datetime— 类型为DateTime或DateTime64的值timezone— 可选。要将datetime值转换为的时区名称。String
datetime 的时区名称。String
示例
使用示例
Query
Response
timezoneOffset
timeZoneOffset
参数
datetime— 需要获取其时区偏移量的DateTime值。DateTime或DateTime64
Int32
示例
使用示例
Query
Response
toDayOfMonth
Date 或 DateTime 所在月份中的日期 (1-31) 。
语法
DAY, DAYOFMONTH
参数
datetime— 要从中获取一个月中第几天的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt8
示例
使用示例
Query
Response
toDayOfWeek
Date 或 DateTime 值是星期几的数字。
toDayOfWeek() 的双参数形式允许你指定一周从星期一还是星期日开始,
以及返回值范围是 0 到 6 还是 1 到 7。
语法
DAYOFWEEK
参数
datetime— 用于获取星期几的日期或日期时间。Date或Date32或DateTime或DateTime64mode— 可选。指定周模式 (0-3) 的整数。省略时默认为 0。UInt8timezone— 可选。转换时使用的时区。String
Date 或 DateTime 对应的星期几。UInt8
示例
使用示例
Query
Response
toDayOfYear
Date 或 DateTime 值在一年中是第几天 (1-366) 。
语法
DAYOFYEAR
参数
datetime— 用于获取一年中第几天的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt16
示例
用法示例
Query
Response
toDaysInMonth
Date 或 DateTime 所在月份的天数。
返回值范围为 28 到 31。
语法
datetime— 日期或日期时间,用于获取其所在月份的天数。Date或Date32或DateTime或DateTime64
UInt8
示例
使用示例
Query
Response
toDaysSinceYearZero
TO_DAYS 函数相同。
语法
TO_DAYS
参数
date— 要计算自零年起经过天数的日期或日期时间。Date或Date32或DateTime或DateTime64time_zone— 时区。String
0000-01-01 以来经过的天数。UInt32
示例
计算自零年起的天数
Query
Response
toHour
DateTime 或 DateTime64 值的小时部分 (0-23) 。
语法
HOUR
参数
datetime— 要提取小时的日期时间。DateTime或DateTime64
datetime 的小时值 (0-23) 。UInt8
示例
使用示例
Query
Response
toISOWeek
toWeek(date, 3)。
ISO 周从星期一开始,一年中的第一周包含 1 月 4 日。
根据 ISO 8601,周数范围为 1 到 53。
请注意,接近年初或年末的日期可能会返回上一年或下一年的周数。例如,
2025 年 12 月 29 日返回第 1 周,因为它属于包含 2026 年 1 月 4 日的第一周。
语法
datetime— 用于获取 ISO 周数的日期或日期时间。Date或DateTime或Date32或DateTime64timezone— 可选。时区。String
UInt8
示例
获取 ISO 周数
Query
Response
Query
Response
toISOYear
datetime— 日期或日期时间值。Date或Date32或DateTime或DateTime64
UInt16
示例
从日期值中获取 ISO 年
Query
Response
toLastDayOfMonth
返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。LAST_DAY
参数
value— 要向上取整到当月最后一天的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向上取整到当月最后一天
Query
Response
toLastDayOfWeek
返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。datetime— 要转换的日期或日期时间。Date或DateTime或Date32或DateTime64mode— 按toWeek()函数中的说明确定一周的第一天。默认值为0。UInt8timezone— 可选。转换时使用的时区。如果未指定,则使用 server 的时区。String
mode,返回给定日期当天或之后最近的星期六或星期日对应的日期。Date 或 Date32
示例
向上取整到最近的星期六或星期日
Query
Response
toMicrosecond
DateTime64 值的微秒部分 (0-999999) 。
语法
MICROSECOND
参数
datetime— 要提取微秒的日期时间。DateTime64
datetime 中当前秒内的微秒值 (0 - 999999) 。UInt32
示例
用法示例
Query
Response
toMillisecond
DateTime 或 DateTime64 值中的毫秒部分 (0-999) 。
语法
MILLISECOND
参数
datetime— 要提取毫秒部分的日期时间。DateTime或DateTime64
datetime 所在分钟内的毫秒值 (0 - 59) 。UInt16
示例
使用示例
Query
Response
toMinute
Date 或 DateTime 值的分钟部分 (0-59) 。
语法
MINUTE
参数
datetime— 要提取分钟的日期时间值。DateTime或DateTime64
datetime 的分钟值 (0 - 59) 。UInt8
示例
使用示例
Query
Response
toModifiedJulianDay
YYYY-MM-DD 的逆推格里高利历日期转换为 Int32 类型的修正儒略日数值。此函数支持 0000-01-01 到 9999-12-31 范围内的日期。如果参数无法解析为日期,或日期无效,则会引发异常。
语法
date— String 格式的日期。String或FixedString
Int32
示例
将日期转换为修正儒略日
Query
Response
toModifiedJulianDayOrNull
toModifiedJulianDay() 类似,但它不会抛出异常,而是返回 NULL。
Syntax
date— 文本形式的日期。String或FixedString
date,返回修正儒略日数;否则返回 null。Nullable(Int32)
示例
将日期转换为修正儒略日,并处理 null 值
Query
Response
toMonday
返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。value— 要向下舍入到所在周周一的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下舍入到所在周的周一
Query
Response
toMonth
Date 或 DateTime 值中的月份部分 (1-12) 。
语法
MONTH
参数
datetime— 用于提取月份的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt8
示例
用法示例
Query
Response
toMonthNumSinceEpoch
date— 日期或日期时间。Date或DateTime或DateTime64
Query
Response
toNanosecond
DateTime64 值中的纳秒分量 (0-999999999) 。
语法
NANOSECOND
参数
datetime— 要从中提取纳秒的日期时间。DateTime64
datetime 中当前秒内的纳秒值 (0 - 999999999) 。UInt32
示例
使用示例
Query
Response
toQuarter
Date 或 DateTime 值所在年份中的季度 (1-4) 。
语法
QUARTER
参数
datetime— 用于获取所在年份季度的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt8
示例
使用示例
Query
Response
toRelativeDayNum
toRelativeDayNum(dt1) - toRelativeDayNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对天数
Query
Response
toRelativeHourNum
toRelativeHourNum(dt1) - toRelativeHourNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对小时数
Query
Response
toRelativeMinuteNum
toRelativeMinuteNum(dt1) - toRelativeMinuteNum(dt2)。
语法
date— 日期或带时间的日期。Date或DateTime或DateTime64
UInt32
示例
获取相对分钟数
Query
Response
toRelativeMonthNum
toRelativeMonthNum(dt1) - toRelativeMonthNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对月份序号
Query
Response
toRelativeQuarterNum
toRelativeQuarterNum(dt1) - toRelativeQuarterNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对季度编号
Query
Response
toRelativeSecondNum
toRelativeSecondNum(dt1) - toRelativeSecondNum(dt2)。
Syntax
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对秒数
Query
Response
toRelativeWeekNum
toRelativeWeekNum(dt1) - toRelativeWeekNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对周数
Query
Response
toRelativeYearNum
toRelativeYearNum(dt1) - toRelativeYearNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt16
示例
获取相对年份数
Query
Response
toSecond
DateTime 或 DateTime64 值中的秒部分 (0-59) 。
语法
SECOND
参数
datetime— 要提取秒数的日期时间。DateTime或DateTime64
datetime 在当前分钟中的秒数 (0 - 59) 。UInt8
示例
用法示例
Query
Response
toStartOfDay
返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。DateTime 或 DateTime64
示例
向下取整到当天开始时刻
Query
Response
toStartOfFifteenMinutes
返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。datetime— 要取整的日期或日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
示例
Query
Response
toStartOfFiveMinutes
返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。toStartOfFiveMinute
参数
datetime— 要取整的日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
示例
Query
Response
toStartOfHour
返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。datetime— 要取整的日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
向下舍入到整点
Query
Response
toStartOfISOYear
返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。value— 要向下取整到 ISO 年第一天的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下取整到 ISO 年的第一天
Query
Response
toStartOfInterval
toStartOfInterval(date_or_date_with_time, INTERVAL x unit [, time_zone]) 语法,对其他 toStartOf*() 函数进行了泛化。
例如,
toStartOfInterval(t, INTERVAL 1 YEAR)返回的结果与toStartOfYear(t)相同,toStartOfInterval(t, INTERVAL 1 MONTH)返回的结果与toStartOfMonth(t)相同,toStartOfInterval(t, INTERVAL 1 DAY)返回的结果与toStartOfDay(t)相同,toStartOfInterval(t, INTERVAL 15 MINUTE)返回的结果与toStartOfFifteenMinutes(t)相同。
如果指定了 unit
WEEK,toStartOfInterval 会假定每周从星期一开始。请注意,这一行为与函数 toStartOfWeek 不同,后者默认每周从星期日开始。
第二种重载分别模拟了 TimescaleDB 的 time_bucket() 函数和 PostgreSQL 的 date_bin() 函数。
语法
time_bucket, date_bin
参数
value— 要向下取整的日期或日期时间值。Date或DateTime或DateTime64x— 时间间隔长度的数值。 -unit— 时间间隔单位:YEAR、QUARTER、MONTH、WEEK、DAY、HOUR、MINUTE、SECOND、MILLISECOND、MICROSECOND、NANOSECOND。 -time_zone— 可选。字符串形式的时区名称。 -origin— 可选。计算所用的原点 (仅第二种重载) 。
DateTime
示例
基本时间间隔取整
Query
Response
Query
Response
toStartOfMicrosecond
datetime— 日期和时间。DateTime64timezone— 可选。返回值使用的时区。若未指定,则函数使用value参数的时区。String
DateTime64
示例
不带时区的查询
Query
Response
Query
Response
toStartOfMillisecond
datetime— 日期和时间。DateTime64timezone— 可选。返回值的时区。若未指定,函数将使用value参数的时区。String
DateTime64
示例
不带时区的查询
Query
Response
Query
Response
toStartOfMinute
返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。datetime— 要进行取整的日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
向下取整到该分钟开始时刻
Query
Response
toStartOfMonth
返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。value— 要向下取整到当月第一天的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下取整到当月第一天
Query
Response
toStartOfNanosecond
datetime— 日期和时间。DateTime64timezone— 可选。返回值的时区。如果未指定,则该函数使用value参数的时区。String
DateTime64
示例
不带时区的查询
Query
Response
Query
Response
toStartOfQuarter
返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。value— 要向下取整到所在季度第一天的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下取整到所在季度的第一天
Query
Response
toStartOfSecond
datetime— 要截去子秒部分的日期和时间。DateTime64timezone— 可选。返回值使用的时区。若未指定,函数将使用参数value的时区。String
DateTime64
示例
不带时区的查询
Query
Response
Query
Response
toStartOfTenMinutes
返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。datetime— 日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
示例
Query
Response
toStartOfWeek
可通过设置
enable_extended_results_for_datetime_functions 来配置返回类型。datetime— 要转换的日期或日期时间。Date或DateTime或Date32或DateTime64mode— 按toWeek()函数中的说明确定每周的第一天。默认值为0。UInt8timezone— 转换时使用的时区。如果未指定,则使用服务器的时区。String
mode,返回给定日期当天或之前最近的星期日或星期一对应的日期。Date 或 Date32
示例
向下取整到最近的星期日或星期一
Query
Response
toStartOfYear
Date 对象。
返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。value— 要向下取整的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下取整到该年的第一天
Query
Response
toTimeWithFixedDate
1970-01-02,
但这一确切时间点属于实现细节,未来可能会变更。
因此,toTime 不应单独使用。
该函数的主要用途是计算两个日期或日期时间之间的时间差,例如 toTime(dt1) - toTime(dt2)。
Syntax
date— 要转换为时间的日期值。Date或DateTime或DateTime64timezone— 可选。返回值使用的时区。String
DateTime
示例
计算两个日期之间的时间差
Query
Response
toTimezone
DateTime 或 DateTime64 转换为指定的时区。
数据的内部值 (Unix 秒数) 不会改变。
只有该值的时区属性和字符串表示形式会发生变化。
语法
toTimeZone
参数
date— 要转换的值。DateTime或DateTime64timezone— 目标时区名称。String
DateTime 或 DateTime64
示例
使用示例
Query
Response
toUTCTimestamp
to_utc_timestamp
参数
datetime— 日期或日期时间类型的常量值或表达式。DateTime或DateTime64time_zone— 表示时区的 String 类型常量值或表达式。String
DateTime 或 DateTime64
示例
转换为 UTC 时区
Query
Response
toUnixTimestamp
String、Date 或 DateTime 转换为 UInt32 类型的 Unix 时间戳 (自 1970-01-01 00:00:00 UTC 起的秒数) 。
语法
date— 要转换的值。Date或Date32或DateTime或DateTime64或Stringtimezone— 可选。转换时使用的时区。如果未指定,则使用服务器时区。String
UInt32
示例
使用示例
Query
Response
toWeek
toWeek() 的双参数形式允许你指定一周是从星期日还是星期一开始,以及返回值范围是 0 到 53,还是 1 到 53。
toISOWeek() 是一个兼容性函数,等价于 toWeek(date,3)。
下表说明了 mode 参数的工作方式。
对于含义为 “在本年内包含 4 天或以上” 的 mode 值,周数按 ISO 8601:1988 编号:
- 如果包含 1 月 1 日的那一周在新的一年中有 4 天或以上,则该周为第 1 周。
- 否则,该周属于上一年的最后一周,而下一周为第 1 周。
String,格式需受 parseDateTime64BestEffort() 支持。支持字符串参数仅是为了兼容 MySQL,因为某些第三方工具依赖这种行为。由于未来对字符串参数的支持可能会取决于新的 MySQL 兼容性设置,而且字符串解析通常较慢,因此建议不要使用这种方式。
语法
week
参数
datetime— 要获取其周数的日期或日期时间值。Date或DateTimemode— 可选。取值范围为0到9,用于确定每周的第一天以及周数的取值范围。默认值为0。 -time_zone— 可选。时区。String
UInt32
示例
获取不同模式下的周数
Query
Response
toYYYYMM
UInt32 数值。
接受第二个可选的时区参数;如果提供,该时区必须是字符串常量。
此函数与函数 YYYYMMDDToDate() 相反。
语法
datetime— 要转换的日期或日期时间。Date或Date32或DateTime或DateTime64timezone— 可选。用于转换的时区。如果提供,时区必须为字符串常量。String
UInt32 数值,其中包含年份和月份 (YYYY * 100 + MM) 。UInt32
示例
将当前日期转换为 YYYYMM 格式
Query
Response
toYYYYMMDD
UInt32 数值。接受第二个可选的时区参数;如果提供,该时区必须是字符串常量。
语法
datetime— 要转换的日期或日期时间值。Date或Date32或DateTime或DateTime64timezone— 可选。转换时使用的时区。如提供,该时区必须是字符串常量。String
UInt32 数值,包含年、月、日 (YYYY * 10000 + MM * 100 + DD) 。UInt32
示例
将当前日期转换为 YYYYMMDD 格式
Query
Response
toYYYYMMDDhhmmss
UInt64 数值,其中包含年份、月份、日期以及时分秒 (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss) 。
接受第二个可选的时区参数。如果提供,该时区必须是字符串常量。
语法
datetime— 要转换的日期或日期时间。Date或Date32或DateTime或DateTime64timezone— 可选。转换时使用的时区。若提供,则时区必须为字符串常量。String
UInt64 数值,包含年、月、日、小时、分钟和秒 (YYYY * 10000000000 + MM * 100000000 + DD * 1000000 + hh * 10000 + mm * 100 + ss) 。UInt64
示例
将当前日期时间转换为 YYYYMMDDhhmmss 格式
Query
Response
toYear
Date 或 DateTime 值的年份部分 (公元) 。
语法
YEAR
参数
datetime— 用于提取年份的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt16
示例
使用示例
Query
Response
toYearNumSinceEpoch
date— 要转换的日期或日期时间。Date或DateTime或DateTime64
Query
Response
toYearWeek
mode 参数的作用方式与 toWeek() 的 mode 参数相同。
警告:toYearWeek() 返回的周数可能与 toWeek() 的返回结果不同。toWeek() 始终返回给定年份上下文中的周数;而当 toWeek() 返回 0 时,toYearWeek() 会返回对应上一年最后一周的值。请参见下面示例中的 prev_yearWeek。
第一个参数也可以指定为 String,格式需为 parseDateTime64BestEffort() 支持的格式。支持字符串参数仅仅是为了兼容某些第三方工具所要求的 MySQL 行为。由于未来对字符串参数的支持可能会依赖新的 MySQL 兼容性设置,且字符串解析通常较慢,因此建议不要使用这种方式。
语法
yearweek
参数
datetime— 要获取其年份和周数的日期或日期时间。Date或DateTimemode— 可选。取值范围为0到9,用于确定每周的第一天以及周数的范围。默认值为0。-timezone— 可选。时区。String
UInt32
示例
获取不同模式下的年份-周数组合
Query
Response
today
toDate(now())。
语法
curdate, current_date
参数
- 无。
Date
示例
用法示例
Query
Response
Query
Response
yesterday
- 无。
Date
示例
获取昨天的日期
Query
Response