日期时间计算#

group Compute Day

枚举

enum class rounding_frequency : int32_t#

日期时间舍入函数 ceil、floor、round 支持的固定频率。

enumerator DAY#
enumerator HOUR#
enumerator MINUTE#
enumerator SECOND#
enumerator MILLISECOND#
enumerator MICROSECOND#
enumerator NANOSECOND#

函数

std::unique_ptr<cudf::column> last_day_of_month(cudf::column_view const &column, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

计算日期时间类型中的月末最后一天,并返回 TIMESTAMP_DAYS cudf::column

参数:
  • column – 输入日期时间值的 cudf::column_view

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

抛出:

cudf::logic_error – 如果输入列数据类型不是 TIMESTAMP

返回:

包含月末最后一天的 cudf::column,数据类型为 TIMESTAMP_DAYS

std::unique_ptr<cudf::column> day_of_year(cudf::column_view const &column, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

计算日期时间从年初开始的天数,并返回 int16_t cudf::column。值在 [1, {365-366}] 之间。

参数:
  • column – 输入日期时间值的 cudf::column_view

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

抛出:

cudf::logic_error – 如果输入列数据类型不是 TIMESTAMP

返回:

数据类型为 INT16 的 cudf::column,包含从年初开始的天数

std::unique_ptr<cudf::column> add_calendrical_months(cudf::column_view const &timestamps, cudf::column_view const &months, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从日期时间类型添加或减去月份数,并返回与输入 timestamps 列具有相同类型的时间戳列。

对于给定行,如果 timestampsmonths 列值为 null,则该行的输出为 null。此方法会保留输入的时间以及适用的日期。如果新日期对于该月份无效,则日期将向下舍入到该年份的月末最后一天。

Example:
timestamps = [5/31/20 08:00:00, 5/31/20 00:00:00, 5/31/20 13:00:00, 5/31/20 23:00:00,
              6/30/20 00:00:01, 6/30/20 14:12:13]
months     = [1               , -1              , -3              , -15             ,
              -1              , 1]
r = add_calendrical_months(timestamp_column, months_column)
r is [6/30/20 08:00:00, 4/30/20 00:00:00, 2/29/20 13:00:00, 2/28/19 23:00:00,
      5/30/20 00:00:01, 7/30/20 14:12:13]
抛出:
  • cudf::logic_error – 如果 timestamps 数据类型不是 TIMESTAMP 或 months 数据类型不是 INT16 或 INT32。

  • cudf::logic_error – 如果 timestamps 列大小与 months 列大小不相等。

参数:
  • timestamps – 时间戳类型的 cudf::column_view

  • months – 包含要添加的月份数的整数类型的 cudf::column_view

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

返回:

包含计算后的时间戳的时间戳类型的 cudf::column

std::unique_ptr<cudf::column> add_calendrical_months(cudf::column_view const &timestamps, cudf::scalar const &months, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

从日期时间类型添加或减去月份数,并返回与输入 timestamps 列具有相同类型的时间戳列。

对于给定行,如果 timestamps 值为 null,则该行的输出为 null。一个 null months 标量将导致一个全为 null 的列。此方法会保留输入的时间以及适用的日期。如果新日期对于该月份无效,则日期将向下舍入到该年份的月末最后一天。

Example:
timestamps = [5/31/20 08:00:00, 6/30/20 00:00:00, 7/31/20 13:00:00]
months     = -3
output is [2/29/20 08:00:00, 3/30/20 00:00:00, 4/30/20 13:00:00]

timestamps = [4/28/20 04:00:00, 5/30/20 01:00:00, 6/30/20 21:00:00]
months     = 1
output is [5/28/20 04:00:00, 6/30/20 01:00:00, 7/30/20 21:00:00]
抛出:
  • cudf::logic_error – 如果 timestamps 数据类型不是 TIMESTAMP 或 months 数据类型不是 INT16 或 INT32。

  • cudf::logic_error – 如果 timestamps 列大小与 months 列大小不相等。

参数:
  • timestamps – 时间戳类型的 cudf::column_view

  • months – 包含要添加的月份数的整数类型的 cudf::scalar

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

返回:

包含计算后的时间戳的时间戳类型的 cudf::column

std::unique_ptr<cudf::column> is_leap_year(cudf::column_view const &column, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

检查给定日期的年份是否为闰年。

output[i] == true 如果 column[i] 的年份是闰年 output[i] == false 如果 column[i] 的年份不是闰年 output[i] is null 如果 column[i] 是 null

参数:
  • column – 输入日期时间值的 cudf::column_view

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

抛出:

cudf::logic_error – 如果输入列数据类型不是 TIMESTAMP

返回:

数据类型为 BOOL8 的 cudf::column,表示对应日期的布尔值

std::unique_ptr<cudf::column> days_in_month(cudf::column_view const &column, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

提取月份中的天数。

output[i] 包含日期 column[i] 所在月份的天数 output[i] is null 如果 column[i] 是 null

抛出:

cudf::logic_error – 如果输入列数据类型不是 TIMESTAMP

参数:
  • column – 输入日期时间值的 cudf::column_view

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

返回:

数据类型为 INT16 的 cudf::column,表示对应日期的月份天数

std::unique_ptr<cudf::column> extract_quarter(cudf::column_view const &column, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

返回日期的季度。

output[i] 将是从 {1, 2, 3, 4} 中选取的值,对应于 column[i] 给出的月份季度。如果输入行 column[i] 为 null,则它将为 null。

抛出:

cudf::logic_error – 如果输入列数据类型不是 TIMESTAMP

参数:
  • column – 包含日期时间值的输入列

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

返回:

INT16 类型的列,指示日期所在的季度

std::unique_ptr<cudf::column> ceil_datetimes(cudf::column_view const &column, rounding_frequency freq, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将日期时间向上舍入到给定频率的最近倍数。

参数:
  • column – 输入日期时间值的 cudf::column_view

  • freq – 指示向上舍入频率的 rounding_frequency

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

抛出:

cudf::logic_error – 如果输入列数据类型不是 TIMESTAMP。

返回:

与输入列具有相同日期时间精度的 cudf::column

std::unique_ptr<cudf::column> floor_datetimes(cudf::column_view const &column, rounding_frequency freq, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将日期时间向下舍入到给定频率的最近倍数。

参数:
  • column – 输入日期时间值的 cudf::column_view

  • freq – 指示向下舍入频率的 rounding_frequency

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

抛出:

cudf::logic_error – 如果输入列数据类型不是 TIMESTAMP。

返回:

与输入列具有相同日期时间精度的 cudf::column

std::unique_ptr<cudf::column> round_datetimes(cudf::column_view const &column, rounding_frequency freq, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#

将日期时间舍入到给定频率的最近倍数。

参数:
  • column – 输入日期时间值的 cudf::column_view

  • freq – 指示舍入频率的 rounding_frequency

  • stream – 用于设备内存操作和内核启动的 CUDA 流

  • mr – 用于分配返回列的设备内存的设备内存资源

抛出:

cudf::logic_error – 如果输入列数据类型不是 TIMESTAMP。

返回:

与输入列具有相同日期时间精度的 cudf::column