Europe/Amsterdam。在这种情况下,使用的时区将是指定的时区,而不是本地 (默认) 时区。
示例
为兼容 SQL 标准,以下函数
NOW、CURRENT_TIMESTAMP、LOCALTIME、LOCALTIMESTAMP、TODAY 和 CURRENT_DATE 可在不加括号的情况下使用。UTCTimestamp
引入版本:v22.11.0 返回查询分析时刻的当前日期和时间。该函数是常量表达式。 此函数的结果与now('UTC') 相同。添加它仅是为了支持 MySQL。推荐使用 now。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
UTC_timestamp
参数
- 无。
DateTime
示例
获取当前 UTC 时间戳
Query
Response
YYYYMMDDToDate
引入版本:v23.9.0 将包含年份、月份和日期数字的数值转换为Date。
此函数与 toYYYYMMDD() 的作用相反。
如果输入未编码出有效的 Date 值,则输出结果未定义。
语法
Date 值 Date
示例
示例
Query
Response
YYYYMMDDToDate32
引入版本:v23.9.0 将包含年、月、日的数值转换为Date32。
此函数与 toYYYYMMDD() 函数相反。
如果输入未编码为有效的 Date32 值,则输出结果未定义。
语法
Date32 值 Date32
示例
示例
Query
Response
YYYYMMDDhhmmssToDateTime
引入版本:v23.9.0 将包含年、月、日、时、分、秒的数字转换为DateTime。
此函数与 toYYYYMMDDhhmmss() 的作用相反。
如果输入未编码为有效的 DateTime 值,则输出结果未定义。
语法
DateTime 值。DateTime
示例
示例
Query
Response
YYYYMMDDhhmmssToDateTime64
引入版本:v23.9.0 将包含年、月、日、小时、分钟和秒的数字转换为DateTime64。
此函数与 toYYYYMMDDhhmmss() 函数的作用相反。
如果输入未编码为有效的 DateTime64 值,则输出结果未定义。
语法
YYYYMMDDhhmmss— 包含年、月、日、时、分、秒的数值。(U)Int*或Float*或Decimalprecision— 小数部分精度 (0-9) 。UInt8timezone— 时区名称。String
DateTime64 值。DateTime64
示例
示例
Query
Response
addDate
引入版本:v23.9.0 将时间间隔加到给定的日期、日期时间,或以字符串编码的日期或日期时间上。 如果相加后的值超出该数据类型的取值范围,则结果未定义。 语法datetime— 要添加interval的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringinterval— 要添加的时间间隔。Interval
interval 添加到 datetime 后得到的日期或日期时间。Date 或 Date32 或 DateTime 或 DateTime64
示例
为日期添加时间间隔
Query
Response
addDays
引入版本:v1.1.0 为日期、日期时间,或以字符串编码的日期或日期时间增加指定天数。 语法datetime— 要在其基础上增加指定天数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要增加的天数。(U)Int*或Float*
datetime 加上 num 天后的结果。Date 或 Date32 或 DateTime 或 DateTime64
示例
为不同的日期类型增加天数
Query
Response
Query
Response
addHours
引入版本:v1.1.0 为日期、日期时间,或以字符串编码的日期或日期时间增加指定小时数。 语法datetime— 要添加指定小时数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的小时数。(U)Int*或Float*
datetime 加上 num 小时后的结果:DateTime 或 DateTime64(3)
示例
为不同日期类型添加小时
Query
Response
Query
Response
addInterval
引入版本:v22.11.0 将一个时间间隔加到另一个时间间隔或时间间隔元组中。相同类型的时间间隔会合并成一个时间间隔。例如,如果传入
toIntervalDay(1) 和 toIntervalDay(2),则结果将是 (3),而不是 (1,1)。interval_1— 第一个时间间隔或由多个时间间隔组成的 Tuple。Interval或Tuple(Interval)interval_2— 要相加的第二个时间间隔。Interval
Tuple(Interval)
示例
时间间隔相加
Query
Response
addMicroseconds
引入版本:v22.6.0 向日期时间或以字符串编码的日期时间添加指定的微秒数。 语法datetime— 要添加指定微秒数的日期时间。DateTime或DateTime64或Stringnum— 要添加的微秒数。(U)Int*或Float*
date_time 加上 num 微秒后的结果。DateTime64
示例
为不同的日期时间类型添加微秒
Query
Response
Query
Response
addMilliseconds
版本引入:v22.6.0 为日期时间或以字符串编码的日期时间添加指定的毫秒数。 语法datetime— 要加上指定毫秒数的日期时间。DateTime或DateTime64或Stringnum— 要添加的毫秒数。(U)Int*或Float*
num 毫秒后的 datetime。DateTime64
示例
为不同的日期时间类型添加毫秒
Query
Response
Query
Response
addMinutes
引入版本:v1.1.0 将指定的分钟数加到日期、日期时间,或以字符串编码的日期或日期时间上。 语法datetime— 要添加指定分钟数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的分钟数。(U)Int*或Float*
datetime 加上 num 分钟后的值。DateTime 或 DateTime64(3)
示例
为不同日期类型添加分钟
Query
Response
Query
Response
addMonths
引入版本:v1.1.0 为日期、日期时间或以字符串编码的日期或日期时间增加指定数量的月份。 语法datetime— 要加上指定月数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的月数。(U)Int*或Float*
datetime 加上 num 个月后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
向不同日期类型添加月份
Query
Response
Query
Response
addNanoseconds
引入版本:v22.6.0 为日期时间或以字符串编码的日期时间添加指定数量的纳秒。 语法datetime— 要添加指定纳秒数的日期时间。DateTime或DateTime64或Stringnum— 要添加的纳秒数。(U)Int*或Float*
datetime 加上 num 纳秒后的结果,类型为 DateTime64
示例
为不同的日期时间类型添加纳秒
Query
Response
Query
Response
addQuarters
引入版本:v20.1.0 为日期、日期时间或以字符串编码的日期或日期时间增加指定数量的季度。 语法datetime— 要添加指定季度数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的季度数。(U)Int*或Float*
datetime 基础上加上 num 个季度后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
为不同的日期类型添加季度
Query
Response
Query
Response
addSeconds
首次引入于:v1.1.0 将指定的秒数加到日期、日期时间,或以字符串编码的日期或日期时间上。 语法datetime— 要加上指定秒数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的秒数。(U)Int*或Float*
datetime 加上 num 秒后的值。DateTime 或 DateTime64(3)
示例
为不同日期类型添加秒数
Query
Response
Query
Response
addTupleOfIntervals
引入版本:v22.11.0 将一个时间间隔 Tuple 依次添加到日期或日期时间中。 语法datetime— 要添加时间间隔的日期或日期时间。Date或Date32或DateTime或DateTime64intervals— 要添加到datetime的时间间隔 Tuple。Tuple(Interval)
intervals 后的 date。Date 或 Date32 或 DateTime 或 DateTime64
示例
将时间间隔 Tuple 添加到日期
Query
Response
addWeeks
引入版本:v1.1.0 为日期、日期时间或以字符串编码的日期/日期时间增加指定的周数。 语法datetime— 要添加指定周数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的周数。(U)Int*或Float*
datetime 加上 num 周后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
为不同日期类型添加周数
Query
Response
Query
Response
addYears
引入于:v1.1.0 为日期、日期时间或字符串编码的日期/日期时间增加指定的年数。 语法datetime— 要添加指定年数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要添加的年数。(U)Int*或Float*
datetime 加上 num 年后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
为不同日期类型添加年份
Query
Response
Query
Response
age
引入版本:v23.1.0 返回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
引入版本:v24.7.0 更改日期或日期时间中的日字段。 语法date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、但日期部分已修改的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
使用示例
Query
Response
changeHour
首次引入于:v24.7.0 更改日期或日期时间中的小时部分。 语法date_or_datetime— 要更改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、但小时部分已修改的值。DateTime 或 DateTime64
示例
使用示例
Query
Response
changeMinute
引入版本:v24.7.0 更改日期或日期时间 的分钟部分。
语法
date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、分钟部分已修改的值。DateTime 或 DateTime64
示例
使用示例
Query
Response
changeMonth
引入版本:v24.7.0 更改日期或日期时间中的月份部分。 语法date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、月份部分已修改的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
使用示例
Query
Response
changeSecond
引入版本:v24.7.0 更改日期或日期时间的秒部分。 语法date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、但秒部分已被修改的值。DateTime 或 DateTime64
示例
使用示例
Query
Response
changeYear
首次引入版本:v24.7.0 更改日期或日期时间中的年份部分。 语法date_or_datetime— 要修改的值。Date或Date32或DateTime或DateTime64value— 新值。(U)Int*
date_or_datetime 类型相同、但年份部分已修改的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
使用示例
Query
Response
dateDiff
引入版本:v23.4.0 返回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
引入版本:v21.7.0 返回日期中指定的部分。 可选值:- ‘year’
- ‘quarter’
- ‘month’
- ‘week’
- ‘dayofyear’
- ‘day’
- ‘weekday’
- ‘hour’
- ‘minute’
- ‘second’
date_part— 要提取的日期部分。Stringdatetime— 日期或日期时间值。Date或Date32或DateTime或DateTime64timezone— 可选。时区。String
String
示例
提取不同的日期部分
Query
Response
dateTrunc
引入版本:v20.8.0 按指定的日期部分截断日期和时间值。 语法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
引入版本:v1.1.0 根据给定的格式字符串对日期或日期时间进行格式化。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
引入于:v20.1.0 与formatDateTime 类似,不同之处在于它使用 Joda 风格而不是 MySQL 风格来格式化日期时间。请参阅 Joda Time 文档。
此函数的反向操作是 parseDateTimeInJodaSyntax。
使用替换字段,可以为结果字符串定义模式。
替换字段:
语法
datetime— 要格式化的日期或日期时间值。DateTime或Date或Date32或DateTime64format— 使用 Joda 语法替换字段的格式字符串。Stringtimezone— 可选。格式化时间所用的时区名称。String
String
示例
使用 Joda 语法格式化日期时间
Query
Response
fromDaysSinceYearZero
引入版本:v23.11.0 对于给定的自 0000 年 1 月 1 日以来经过的天数,返回 ISO 8601 定义的前推格里高利历中的对应日期。 该计算方式与 MySQL 的FROM_DAYS() 函数相同。如果结果无法表示在 Date 类型的取值范围内,则结果未定义。
语法
FROM_DAYS
参数
days— 自零年开始经过的天数。UInt32
Date
示例
将自零年开始经过的天数转换为日期
Query
Response
fromDaysSinceYearZero32
引入版本:v23.11.0 对于自 0000 年 1 月 1 日 起经过的给定天数,返回 ISO 8601 定义的前推格里高利历中的对应日期。 其计算方式与 MySQL 的FROM_DAYS() 函数相同。如果结果无法在 Date32 类型的取值范围内表示,则结果未定义。
语法
days— 自零年起累计经过的天数。UInt32
Date32
示例
将自零年起累计经过的天数转换为日期
Query
Response
fromModifiedJulianDay
引入版本:v21.1.0 将 修正儒略日 数值转换为文本格式的 前推格里高利历 日期YYYY-MM-DD。此函数支持的日数范围为 -678941 到 2973483 (分别表示 0000-01-01 和 9999-12-31) 。如果日数超出支持范围,则会引发异常。
语法
day— 修正儒略日编号。(U)Int*
String
示例
将修正儒略日转换为日期
Query
Response
fromModifiedJulianDayOrNull
引入版本:v21.1.0 与fromModifiedJulianDay() 类似,但它不会抛出异常,而是返回 NULL。
语法
day— 修正儒略日编号。(U)Int*
day 参数有效,则以文本形式返回日期;否则返回 null。Nullable(String)
示例
将修正儒略日转换为日期,并处理 null 值
Query
Response
fromUTCTimestamp
引入版本:v22.1.0 将日期或日期时间值从 UTC 时区转换为指定时区中的日期或日期时间值。此函数主要是为了兼容 Apache Spark 及类似框架而提供。 语法from_utc_timestamp
参数
datetime— 日期或日期时间常量值,或表达式。DateTime或DateTime64time_zone— String 类型的常量值,或表示时区的表达式。String
DateTime 或 DateTime64
示例
将 UTC 时区转换为指定时区
Query
Response
fromUnixTimestamp
引入版本:v20.8.0 此函数将 Unix 时间戳转换为日历日期和一天中的时间。 它有两种调用方式:- 当给定一个类型为
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
引入版本:v23.1.0 此函数将 Unix 时间戳转换为日历日期和一天中的时间。 它有两种调用方式: 当给定一个类型为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
在 v26.7.0 中引入 返回在查询分析时刻,服务器 (或会话) 时区中的当前时间。 该函数是一个常量表达式。它是符合 SQL 标准 / PostgreSQL 的LOCALTIME,等价于 CAST(now() AS Time)。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
Time
示例
不带括号的 SQL 标准语法
Query
Response
makeDate
版本引入:v22.6.0 根据以下任一输入创建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
引入版本:v22.6.0 通过以下任一方式创建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
引入版本:v22.6.0 根据年、月、日、时、分和秒创建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
引入版本:v22.6.0 根据 year、month、day、hour、minute、second 创建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
首次引入于:v22.1.0 返回日期或日期时间值对应的月份名称字符串。 语法datetime— 日期或日期时间。Date或Date32或DateTime或DateTime64
String
示例
从日期中获取月份名称
Query
Response
now
引入版本:v1.1.0 返回查询分析时的当前日期和时间。该函数是一个常量表达式。此函数是非确定性的:对于相同的参数,可能会返回不同的结果。
localtimestamp, current_timestamp
参数
timezone— 可选。返回值所用的时区名称。String
DateTime
示例
不带时区的查询
Query
Response
Query
Response
Query
Response
now64
引入版本:v20.1.0 返回查询分析时刻的当前日期和时间,具有子秒级精度。该函数是一个常量表达式。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
scale— 可选。时间粒度 (precision) 为 10^-precision 秒。有效范围:[0 : 9]。通常使用 3 (默认,毫秒) 、6 (微秒) 或 9 (纳秒) 。UInt8timezone— 可选。用于返回值的时区名称。String
DateTime64
示例
使用默认精度和自定义精度的查询
Query
Response
nowInBlock
自 v22.8.0 引入 返回处理每个数据块时的当前日期和时间。与函数now 不同,它不是常量表达式,因此对于运行时间较长的查询,不同块中的返回值会不同。
在运行时间较长的 INSERT SELECT 查询中,使用此函数生成当前时间是合理的。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
timezone— 可选。返回值所用的时区名称。String
DateTime
示例
与 now() 函数的区别
Query
Response
nowInBlock64
引入版本:v25.8.0 返回处理每个数据块时的当前日期和时间,精确到毫秒。与函数 now64 不同,它不是常量表达式,因此对于长时间运行的查询,不同块返回的值会有所不同。 在长时间运行的 INSERT SELECT 查询中,使用此函数生成当前时间很有意义。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
scale— 可选。时间粒度 (precision) :10^-precision 秒。有效范围:[0 : 9]。通常使用 3 (默认,毫秒) 、6 (微秒) 或 9 (纳秒) 。UInt8timezone— 可选。返回值的时区名称。String
DateTime64
示例
与 now64() 函数的区别
Query
Response
serverTimezone
引入版本:v23.6.0 返回服务器的时区,即timezone 设置的值。
如果该函数是在分布式表的上下文中执行的,则会生成一个普通列,其值对应各个分片。否则,会生成一个常量值。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
serverTimeZone
参数
- 无。
String
示例
使用示例
Query
Response
subDate
引入版本:v23.9.0 从给定的日期、日期时间,或以字符串编码的日期或日期时间中减去时间间隔。 如果相减后的值超出该数据类型的取值范围,则结果未定义。 语法datetime— 要从中减去interval的日期或日期时间。Date或Date32或DateTime或DateTime64interval— 要减去的时间间隔。Interval
datetime 中减去 interval 后得到的日期或日期时间。Date 或 Date32 或 DateTime 或 DateTime64
示例
从日期中减去时间间隔
Query
Response
subtractDays
引入版本:v1.1.0 从日期、日期时间,或以字符串编码的日期或日期时间中减去指定天数。 语法datetime— 要从中减去指定天数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的天数。(U)Int*或Float*
datetime 减去 num 天后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去天数
Query
Response
Query
Response
subtractHours
引入版本:v1.1.0 从日期、日期时间,或以字符串编码的日期或日期时间中减去指定的小时数。 语法datetime— 要从中减去指定小时数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的小时数。(U)Int*或Float*
datetime 减去 num 小时后的结果。DateTime 或 DateTime64(3)
示例
对不同日期类型减去小时数
Query
Response
Query
Response
subtractInterval
首次引入版本:v22.11.0 将一个取负的时间间隔加到另一个时间间隔或由多个时间间隔组成的元组上。 注意:相同类型的时间间隔会合并为单个时间间隔。例如,如果传入toIntervalDay(2) 和 toIntervalDay(1),
那么结果将是 (1),而不是 (2,1)。
语法
interval_1— 第一个时间间隔,或由时间间隔组成的 Tuple。Interval或Tuple(Interval)interval_2— 将被取反的第二个时间间隔。Interval
Tuple(T)
示例
时间间隔相减
Query
Response
subtractMicroseconds
引入版本:v22.6.0 从日期时间或以字符串编码的日期时间中减去指定数量的微秒。 语法datetime— 要减去指定微秒数的日期时间。DateTime或DateTime64或Stringnum— 要减去的微秒数。(U)Int*或Float*
datetime 减去 num 微秒后的结果:DateTime64
示例
对不同的日期时间类型减去微秒
Query
Response
Query
Response
subtractMilliseconds
引入版本:v22.6.0 从日期时间或以字符串编码的日期时间中减去指定毫秒数。 语法datetime— 要减去指定毫秒数的日期时间。DateTime或DateTime64或Stringnum— 要减去的毫秒数。(U)Int*或Float*
datetime 减去 num 毫秒后的结果。DateTime64
示例
从不同的日期时间类型中减去毫秒
Query
Response
Query
Response
subtractMinutes
引入版本:v1.1.0 从日期、日期时间或以字符串编码的日期/日期时间中减去指定的分钟数。 语法datetime— 要从中减去指定分钟数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的分钟数。(U)Int*或Float*
datetime 减去 num 分钟后的值。DateTime 或 DateTime64(3)
示例
从不同日期类型中减去分钟
Query
Response
Query
Response
subtractMonths
引入版本:v1.1.0 从日期、日期时间,或以字符串编码的日期或日期时间中减去指定的月数。 语法datetime— 要从中减去指定月数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的月数。(U)Int*或Float*
datetime 减去 num 个月后的结果。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去月份
Query
Response
Query
Response
subtractNanoseconds
自 v20.1.0 起引入 从日期时间或以字符串编码的日期时间中减去指定纳秒数。 语法datetime— 要减去指定纳秒数的日期时间。DateTime或DateTime64或Stringnum— 要减去的纳秒数。(U)Int*或Float*
datetime 减去 num 纳秒后的结果。DateTime64
示例
从不同的日期时间类型中减去纳秒
Query
Response
Query
Response
subtractQuarters
引入版本:v20.1.0 从日期、日期时间或以字符串编码的日期或日期时间中减去指定数量的季度。 语法datetime— 要从中减去指定季度数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的季度数。(U)Int*或Float*
datetime 减去 num 个季度后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去季度
Query
Response
Query
Response
subtractSeconds
引入版本:v1.1.0 从日期、日期时间,或以字符串编码的日期或日期时间中减去指定的秒数。 语法datetime— 要从中减去指定秒数的日期或日期时间值。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的秒数。(U)Int*或Float*
datetime 减去 num 秒后的结果:DateTime 或 DateTime64(3)
示例
从不同日期类型中减去秒数
Query
Response
Query
Response
subtractTupleOfIntervals
引入版本:v22.11.0 从日期或日期时间中依次减去一个由时间间隔组成的元组。 语法datetime— 要从中减去时间间隔的日期或日期时间。Date或Date32或DateTime或DateTime64intervals— 要从datetime中减去的时间间隔 Tuple。Tuple(Interval)
intervals 后的 date。Date 或 Date32 或 DateTime 或 DateTime64
示例
从日期中减去时间间隔 Tuple
Query
Response
subtractWeeks
引入版本:v1.1.0 从日期、日期时间,或以字符串编码的日期/日期时间中减去指定的周数。 语法datetime— 要从中减去指定周数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的周数。(U)Int*或Float*
datetime 减去 num 周后的结果。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去周数
Query
Response
Query
Response
subtractYears
引入版本:v1.1.0 从日期、日期时间或以字符串编码的日期或日期时间中减去指定的年数。 语法datetime— 从中减去指定年数的日期或日期时间。Date或Date32或DateTime或DateTime64或Stringnum— 要减去的年数。(U)Int*或Float*
datetime 减去 num 年后的值。Date 或 Date32 或 DateTime 或 DateTime64
示例
从不同日期类型中减去年数
Query
Response
Query
Response
timeDiff
Introduced in: v23.4.0 返回两个日期或日期时间值之间以秒为单位的差值。 差值按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
Introduced in: v1.1.0 将时间向下舍入到半小时时间间隔的起始时间点。尽管此函数可以接受扩展类型
Date32 和 DateTime64 的值作为参数,
但如果传入超出正常范围的时间 (Date 为 1970 年至 2149 年 / DateTime 为 2106 年),则会产生错误结果。time— 要向下取整到半小时时间间隔起始点的时间。DateTime或Date32或DateTime64time_zone— 可选。String 类型的常量值,或表示时区的表达式。String
DateTime
示例
将时间向下取整到半小时时间间隔
Query
Response
timeSlots
引入版本:v1.1.0 对于从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
引入版本:v23.9.0 将第一个参数expr 转换为 DateTime64(6) 类型。
如果提供了第二个参数 expr_time,则会将指定时间加到转换后的值上。
语法
expr 转换后的值,或加上时间后的 expr DateTime64(6)
示例
将日期字符串转换为 DateTime64(6)
Query
Response
Query
Response
timezone
引入版本:v21.4.0 返回当前会话的时区名称,或者将时区偏移量或时区名称转换为规范的时区名称。此函数是非确定性的:对于相同的参数,可能会返回不同的结果。
timeZone
参数
- 无。
String
示例
用法示例
Query
Response
timezoneOf
首次引入于:v21.4.0 返回DateTime 或 DateTime64 值的时区名称。
语法
timeZoneOf
参数
datetime— 类型为DateTime或DateTime64的值timezone— 可选。要将datetime值转换为的时区名称。String
datetime 的时区名称。String
示例
使用示例
Query
Response
timezoneOffset
Introduced in: v21.6.0 返回相对于 UTC 的时区偏移量,单位为秒。 该函数会将指定日期和时间对应的夏令时以及历史时区变更考虑在内。 SyntaxtimeZoneOffset
参数
datetime— 需要获取其时区偏移量的DateTime值。DateTime或DateTime64
Int32
示例
使用示例
Query
Response
toDayOfMonth
引入版本:v1.1.0 返回Date 或 DateTime 所在月份中的日期 (1-31) 。
语法
DAY, DAYOFMONTH
参数
datetime— 要从中获取一个月中第几天的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt8
示例
使用示例
Query
Response
toDayOfWeek
引入版本:v1.1.0 返回Date 或 DateTime 值是星期几的数字。
toDayOfWeek() 的双参数形式允许你指定一周从星期一还是星期日开始,
以及返回值范围是 0 到 6 还是 1 到 7。
语法
DAYOFWEEK
参数
datetime— 用于获取星期几的日期或日期时间。Date或Date32或DateTime或DateTime64mode— 可选。指定周模式 (0-3) 的整数。省略时默认为 0。UInt8timezone— 可选。转换时使用的时区。String
Date 或 DateTime 对应的星期几。UInt8
示例
使用示例
Query
Response
toDayOfYear
引入版本:v18.4.0 返回Date 或 DateTime 值在一年中是第几天 (1-366) 。
语法
DAYOFYEAR
参数
datetime— 用于获取一年中第几天的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt16
示例
用法示例
Query
Response
toDaysInMonth
引入版本:v26.3.0 返回Date 或 DateTime 所在月份的天数。
返回值范围为 28 到 31。
语法
datetime— 日期或日期时间,用于获取其所在月份的天数。Date或Date32或DateTime或DateTime64
UInt8
示例
使用示例
Query
Response
toDaysSinceYearZero
引入版本:v23.9.0 对于给定日期,返回自 0000 年 1 月 1 日起,按照 ISO 8601 定义的前推公历 计算所经过的天数。 该计算方式与 MySQL 的TO_DAYS 函数相同。
语法
TO_DAYS
参数
date— 要计算自零年起经过天数的日期或日期时间。Date或Date32或DateTime或DateTime64time_zone— 时区。String
0000-01-01 以来经过的天数。UInt32
示例
计算自零年起的天数
Query
Response
toHour
引入版本:v1.1.0 返回DateTime 或 DateTime64 值的小时部分 (0-23) 。
语法
HOUR
参数
datetime— 要提取小时的日期时间。DateTime或DateTime64
datetime 的小时值 (0-23) 。UInt8
示例
使用示例
Query
Response
toISOWeek
引入版本:v20.1.0 返回某个日期或日期时间的 ISO 周数。 这是一个兼容性函数,等同于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
引入版本:v18.4.0 将日期或日期时间转换为 ISO 年编号。 语法datetime— 日期或日期时间值。Date或Date32或DateTime或DateTime64
UInt16
示例
从日期值中获取 ISO 年
Query
Response
toLastDayOfMonth
引入版本:v1.1.0 将日期或日期时间向上取整到当月的最后一天。返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。LAST_DAY
参数
value— 要向上取整到当月最后一天的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向上取整到当月最后一天
Query
Response
toLastDayOfWeek
Introduced in: v23.5.0 将日期或日期时间向上取整到最近的星期六或星期日。返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。datetime— 要转换的日期或日期时间。Date或DateTime或Date32或DateTime64mode— 按toWeek()函数中的说明确定一周的第一天。默认值为0。UInt8timezone— 可选。转换时使用的时区。如果未指定,则使用 server 的时区。String
mode,返回给定日期当天或之后最近的星期六或星期日对应的日期。Date 或 Date32
示例
向上取整到最近的星期六或星期日
Query
Response
toMicrosecond
引入版本:v25.7.0 返回DateTime64 值的微秒部分 (0-999999) 。
语法
MICROSECOND
参数
datetime— 要提取微秒的日期时间。DateTime64
datetime 中当前秒内的微秒值 (0 - 999999) 。UInt32
示例
用法示例
Query
Response
toMillisecond
引入版本:v24.2.0 返回DateTime 或 DateTime64 值中的毫秒部分 (0-999) 。
语法
MILLISECOND
参数
datetime— 要提取毫秒部分的日期时间。DateTime或DateTime64
datetime 所在分钟内的毫秒值 (0 - 59) 。UInt16
示例
使用示例
Query
Response
toMinute
引入版本:v1.1.0 返回Date 或 DateTime 值的分钟部分 (0-59) 。
语法
MINUTE
参数
datetime— 要提取分钟的日期时间值。DateTime或DateTime64
datetime 的分钟值 (0 - 59) 。UInt8
示例
使用示例
Query
Response
toModifiedJulianDay
引入版本:v21.1.0 将文本格式YYYY-MM-DD 的逆推格里高利历日期转换为 Int32 类型的修正儒略日数值。此函数支持 0000-01-01 到 9999-12-31 范围内的日期。如果参数无法解析为日期,或日期无效,则会引发异常。
语法
date— String 格式的日期。String或FixedString
Int32
示例
将日期转换为修正儒略日
Query
Response
toModifiedJulianDayOrNull
Introduced in:v21.1.0 与toModifiedJulianDay() 类似,但它不会抛出异常,而是返回 NULL。
Syntax
date— 文本形式的日期。String或FixedString
date,返回修正儒略日数;否则返回 null。Nullable(Int32)
示例
将日期转换为修正儒略日,并处理 null 值
Query
Response
toMonday
引入版本:v1.1.0 将日期或日期时间向下取整到同一周的周一。返回该日期。返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。value— 要向下舍入到所在周周一的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下舍入到所在周的周一
Query
Response
toMonth
首次引入版本:v1.1.0 返回Date 或 DateTime 值中的月份部分 (1-12) 。
语法
MONTH
参数
datetime— 用于提取月份的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt8
示例
用法示例
Query
Response
toMonthNumSinceEpoch
引入版本:v25.3.0 返回自 1970 年起经过的月数 语法date— 日期或日期时间。Date或DateTime或DateTime64
Query
Response
toNanosecond
首次引入于:v25.7.0 返回DateTime64 值中的纳秒分量 (0-999999999) 。
语法
NANOSECOND
参数
datetime— 要从中提取纳秒的日期时间。DateTime64
datetime 中当前秒内的纳秒值 (0 - 999999999) 。UInt32
示例
使用示例
Query
Response
toQuarter
引入版本:v1.1.0 返回给定Date 或 DateTime 值所在年份中的季度 (1-4) 。
语法
QUARTER
参数
datetime— 用于获取所在年份季度的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt8
示例
使用示例
Query
Response
toRelativeDayNum
引入版本:v1.1.0 将日期或日期时间转换为自过去某个固定时间点起经过的天数。 确切的时间点属于实现细节,因此不应单独使用此函数。 该函数的主要用途是计算两个日期或日期时间之间相差的天数,例如toRelativeDayNum(dt1) - toRelativeDayNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对天数
Query
Response
toRelativeHourNum
引入版本:v1.1.0 将日期或日期时间转换为自过去某个固定时间点起经过的小时数。 具体的时间点属于实现细节,因此不应单独使用此函数。 此函数的主要用途是计算两个日期或日期时间之间相差的小时数,例如toRelativeHourNum(dt1) - toRelativeHourNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对小时数
Query
Response
toRelativeMinuteNum
自以下版本引入:v1.1.0 将日期或日期时间转换为自过去某个固定时间点起经过的分钟数。 确切的时间点属于实现细节,因此不应单独使用此函数。 该函数的主要用途是计算两个日期或日期时间之间相差的分钟数,例如:toRelativeMinuteNum(dt1) - toRelativeMinuteNum(dt2)。
语法
date— 日期或带时间的日期。Date或DateTime或DateTime64
UInt32
示例
获取相对分钟数
Query
Response
toRelativeMonthNum
引入版本:v1.1.0 将日期或日期时间转换为自过去某个固定时间点以来经过的月数。 确切的时间点属于实现细节,因此此函数不适合单独使用。 该函数的主要用途是计算两个日期或日期时间之间相差的月数,例如toRelativeMonthNum(dt1) - toRelativeMonthNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对月份序号
Query
Response
toRelativeQuarterNum
引入版本:v1.1.0 将日期或日期时间转换为自过去某个固定时间点起经过的季度数。 确切的时间点属于实现细节,因此不适合单独使用此函数。 此函数的主要用途是计算两个日期或日期时间之间相差的季度数,例如:toRelativeQuarterNum(dt1) - toRelativeQuarterNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对季度编号
Query
Response
toRelativeSecondNum
Introduced in: v1.1.0 将日期或日期时间转换为自过去某个固定时间点起经过的秒数。 该确切时间点属于实现细节,因此此函数不适合单独使用。 此函数的主要用途是计算两个日期或日期时间之间相差的秒数,例如toRelativeSecondNum(dt1) - toRelativeSecondNum(dt2)。
Syntax
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对秒数
Query
Response
toRelativeWeekNum
引入版本:v1.1.0 将 date 或 date with time 转换为自过去某个固定时间点起经过的周数。 该确切时间点属于实现细节,因此此函数不适合单独使用。 此函数的主要用途是计算两个日期或日期时间之间相差的周数,例如:toRelativeWeekNum(dt1) - toRelativeWeekNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt32
示例
获取相对周数
Query
Response
toRelativeYearNum
引入版本:v1.1.0 将日期或日期时间转换为自过去某个固定时间点起经过的年数。 确切的时间点属于实现细节,因此不建议单独使用此函数。 此函数的主要用途是计算两个日期或日期时间之间相差的年数,例如toRelativeYearNum(dt1) - toRelativeYearNum(dt2)。
语法
date— 日期或日期时间。Date或DateTime或DateTime64
UInt16
示例
获取相对年份数
Query
Response
toSecond
引入版本:v1.1.0 返回DateTime 或 DateTime64 值中的秒部分 (0-59) 。
语法
SECOND
参数
datetime— 要提取秒数的日期时间。DateTime或DateTime64
datetime 在当前分钟中的秒数 (0 - 59) 。UInt8
示例
用法示例
Query
Response
toStartOfDay
引入版本:v1.1.0 将日期时间向下取整到当天起始时刻。返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。DateTime 或 DateTime64
示例
向下取整到当天开始时刻
Query
Response
toStartOfFifteenMinutes
引入版本:v1.1.0 将日期时间向下取整到所在十五分钟时间间隔的起始时刻。返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。datetime— 要取整的日期或日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
示例
Query
Response
toStartOfFiveMinutes
Introduced in:v22.6.0 将日期时间向下取整到最近的五分钟时间间隔的起始时刻。返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。toStartOfFiveMinute
参数
datetime— 要取整的日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
示例
Query
Response
toStartOfHour
引入版本:v1.1.0 将日期时间向下取整到该小时的起始时刻。返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。datetime— 要取整的日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
向下取整到整点
Query
Response
toStartOfISOYear
Introduced in: v1.1.0 将日期或日期时间向下取整到 ISO 年的第一天,该日期可能与普通年份的第一天不同。参见 ISO week date。返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。value— 要向下取整到 ISO 年第一天的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下取整到 ISO 年的第一天
Query
Response
toStartOfInterval
引入版本:v20.1.0 此函数通过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() 函数。
语法
date_bin, time_bucket
参数
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
引入版本:v22.6.0 将日期时间向下取整到微秒开始时刻。 语法datetime— 日期和时间。DateTime64timezone— 可选。返回值使用的时区。若未指定,则函数使用value参数的时区。String
DateTime64
示例
不带时区的查询
Query
Response
Query
Response
toStartOfMillisecond
引入版本:v22.6.0 将日期时间向下取整到毫秒的开始时刻。 语法datetime— 日期和时间。DateTime64timezone— 可选。返回值的时区。若未指定,函数将使用value参数的时区。String
DateTime64
示例
不带时区的查询
Query
Response
Query
Response
toStartOfMinute
引入版本:v1.1.0 将日期时间向下取整到该分钟的起始时刻。返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。datetime— 要进行取整的日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
向下取整到该分钟开始时刻
Query
Response
toStartOfMonth
引入版本:v1.1.0 将日期或日期时间向下取整到该月的第一天。返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。value— 要向下取整到当月第一天的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下取整到当月第一天
Query
Response
toStartOfNanosecond
引入版本:v22.6.0 将日期时间向下取整到纳秒的起始时刻。 语法datetime— 日期和时间。DateTime64timezone— 可选。返回值的时区。如果未指定,则该函数使用value参数的时区。String
DateTime64
示例
不带时区的查询
Query
Response
Query
Response
toStartOfQuarter
Introduced in: v1.1.0 将日期或日期时间向下取整到所在季度的第一天。季度的第一天可能是 1 月 1 日、4 月 1 日、7 月 1 日或 10 月 1 日。返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。value— 要向下取整到所在季度第一天的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下取整到所在季度的第一天
Query
Response
toStartOfSecond
引入版本:v20.5.0 将日期时间向下取整到秒的起始时刻。 语法datetime— 要截去子秒部分的日期和时间。DateTime64timezone— 可选。返回值使用的时区。若未指定,函数将使用参数value的时区。String
DateTime64
示例
不带时区的查询
Query
Response
Query
Response
toStartOfTenMinutes
引入版本:v20.1.0 将日期时间向下取整到最近一个十分钟时间间隔的起始时刻。返回类型可通过设置
enable_extended_results_for_datetime_functions 进行配置。datetime— 日期时间。DateTime或DateTime64
DateTime 或 DateTime64
示例
示例
Query
Response
toStartOfWeek
引入版本:v20.1.0 将日期或日期时间向下取整到最近的星期日或星期一。可通过设置
enable_extended_results_for_datetime_functions 来配置返回类型。datetime— 要转换的日期或日期时间。Date或DateTime或Date32或DateTime64mode— 按toWeek()函数中的说明确定每周的第一天。默认值为0。UInt8timezone— 转换时使用的时区。如果未指定,则使用服务器的时区。String
mode,返回给定日期当天或之前最近的星期日或星期一对应的日期。Date 或 Date32
示例
向下取整到最近的星期日或星期一
Query
Response
toStartOfYear
引入版本:v1.1.0 将日期或日期时间向下取整到当年的第一天。返回值为Date 对象。
返回类型可通过设置
enable_extended_results_for_datetime_functions 来配置。value— 要向下取整的日期或日期时间。Date或Date32或DateTime或DateTime64
Date
示例
向下取整到该年的第一天
Query
Response
toTimeWithFixedDate
引入版本:v25.5.0 提取日期时间的时间部分。 返回结果是相对于固定时间点的偏移量,该时间点目前为1970-01-02;
但确切的时间点属于实现细节,未来可能会变更。
因此,不应单独使用 toTimeWithFixedDate。
该函数的主要用途是计算两个日期时间之间的时间差,例如 toTimeWithFixedDate(dt1) - toTimeWithFixedDate(dt2)。
这是旧版 toTime 函数,因名称 toTime 现已被
toTime 占用而在 v25.5 中更名;该函数会将值转换为
Time 数据类型。
启用设置
use_legacy_to_time 后,仍可通过旧名称 toTime 访问该函数 (自 v26.7 起默认值为 0,而在 v25.6 至 v26.6 期间默认值为 1) 。
如果 datetime 参数包含亚秒部分,返回的 DateTime 值会舍弃这些部分,精度为秒。
语法
datetime— 要转换为时间的日期时间。DateTime或DateTime64timezone— 可选。返回值的时区。String
DateTime
示例
计算两个日期之间的时间差
Query
Response
Query
Response
Query
Response
toTimezone
自 v1.1.0 引入 将DateTime 或 DateTime64 转换为指定的时区。
数据的内部值 (Unix 秒数) 不会改变。
只有该值的时区属性和字符串表示形式会发生变化。
语法
toTimeZone
参数
date— 要转换的值。DateTime或DateTime64timezone— 目标时区名称。String
DateTime 或 DateTime64
示例
使用示例
Query
Response
toUTCTimestamp
引入版本:v23.8.0 将日期或日期时间值从某个时区转换为 UTC 时区的时间戳。此函数主要用于兼容 Apache Spark 及类似框架。 语法to_utc_timestamp
参数
datetime— 日期或日期时间类型的常量值或表达式。DateTime或DateTime64time_zone— 表示时区的 String 类型常量值或表达式。String
DateTime 或 DateTime64
示例
转换为 UTC 时区
Query
Response
toUnixTimestamp
引入版本:v1.1.0 将String、Date 或 DateTime 转换为 UInt32 类型的 Unix 时间戳 (自 1970-01-01 00:00:00 UTC 起的秒数) 。
语法
date— 要转换的值。Date或Date32或DateTime或DateTime64或Stringtimezone— 可选。转换时使用的时区。如果未指定,则使用服务器时区。String
UInt32
示例
使用示例
Query
Response
toWeek
引入版本:v20.1.0 此函数返回 Date 或 DateTime 的周数。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
引入版本:v1.1.0 将日期或日期时间转换为包含年份和月份数字 (YYYY * 100 + MM) 的UInt32 数值。
接受第二个可选的时区参数;如果提供,该时区必须是字符串常量。
此函数与函数 YYYYMMDDToDate() 相反。
语法
datetime— 要转换的日期或日期时间。Date或Date32或DateTime或DateTime64timezone— 可选。用于转换的时区。如果提供,时区必须为字符串常量。String
UInt32 数值,其中包含年份和月份 (YYYY * 100 + MM) 。UInt32
示例
将日期时间转换为另一个时区的 YYYYMM 格式
Query
Response
toYYYYMMDD
引入版本:v1.1.0 将日期或日期时间转换为一个包含年、月、日数字 (YYYY * 10000 + MM * 100 + DD) 的UInt32 数值。接受第二个可选的时区参数;如果提供,该时区必须是字符串常量。
语法
datetime— 要转换的日期或日期时间值。Date或Date32或DateTime或DateTime64timezone— 可选。转换时使用的时区。如提供,该时区必须是字符串常量。String
UInt32 数值,包含年、月、日 (YYYY * 10000 + MM * 100 + DD) 。UInt32
示例
将其他时区的日期转换为 YYYYMMDD 格式
Query
Response
toYYYYMMDDhhmmss
引入版本:v1.1.0 将日期或日期时间转换为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
引入版本:v1.1.0 返回Date 或 DateTime 值的年份部分 (公元) 。
语法
YEAR
参数
datetime— 用于提取年份的日期或日期时间。Date或Date32或DateTime或DateTime64
UInt16
示例
使用示例
Query
Response
toYearNumSinceEpoch
引入版本:v25.3.0 返回自 1970 年以来经过的年数 语法date— 要转换的日期或日期时间。Date或DateTime或DateTime64
Query
Response
toYearWeek
引入版本:v20.1.0 返回日期对应的年份和周数。对于一年中的第一周和最后一周,结果中的年份可能与日期参数中的年份不同。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
于 v1.1.0 中引入 返回查询分析时刻的当前日期。等同于toDate(now())。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
current_date, curdate
参数
- 无。
Date
示例
用法示例
Query
Response
Query
Response
yesterday
引入版本:v1.1.0 不接受任何参数,并返回查询分析过程中某一时刻的昨天日期。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
Date
示例
获取昨天的日期
Query
Response