【问题标题】:Struggling with Datetime Parsing苦苦挣扎于日期时间解析
【发布时间】:2021-09-29 16:13:17
【问题描述】:

我可以使用一些内部 ch 函数将此日期时间格式 5/11/2021 13:10:25 转换为 YYYY-MM-DD hh:mm:ss 吗? 找出来时我很挣扎。 我试过以下: replaceRegexpOne(toString(START_TIME), '\d{2}/\d{2}/\d{4}', '(\2)-(\1)-(\3)')

但是得到了:

RROR:DateTime 之后的垃圾:“375291300” 错误:DateTime 必须采用 YYYY-MM-DD hh:mm:ss 或 NNNNNNNNNN(unix 时间戳,正好 10 位)格式。

:(在第 1 行) , 堆栈跟踪(复制此消息时,始终包含以下行):

  1. DB::Exception::Exception(std::__1::basic_string const&, int, bool) @ 0x8b770fa in /usr/bin /点击屋
  2. DB::throwAtAssertionFailed(char const*, DB::ReadBuffer&) @ 0x8bcd437 in /usr/bin/clickhouse
  3. ? @ 0x105329db 在 /usr/bin/clickhouse
  4. DB::CSVRowInputFormat::readRow(std::__1::vector::mutable_ptr<:icolumn>, std::__1::allocator::mutable_ptr<:icolumn> > >&, DB::RowReadExtension&) @ 0x10532b2e in /usr/bin/clickhouse
  5. DB::IRowInputFormat::generate() @ 0x1051ccc8 in /usr/bin/clickhouse
  6. DB::ISource::tryGenerate() @ 0x104a97d5 in /usr/bin/clickhouse
  7. DB::ISource::work() @ 0x104a93ba in /usr/bin/clickhouse
  8. DB::ParallelParsingInputFormat::InternalParser::getChunk() @ 0x10567dde in /usr/bin/clickhouse
  9. DB::ParallelParsingInputFormat::parserThreadFunction(std::__1::shared_ptr<:threadgroupstatus>, unsigned long) @ 0x1056737e in /usr/bin/clickhouse
  10. ThreadPoolImpl::worker(std::__1::__list_iterator) @ 0x8bb9ed8 in /usr/bin/clickhouse
  11. ThreadFromGlobalPool::ThreadFromGlobalPool, int, std::__1::optional)::'lambda1'()>(void&&, void ThreadPoolImpl ::scheduleImpl(std::__1::function, int, std::__1::optional)::'lambda1'()&&...)::'lambda'()::operator( )() @ 0x8bbb89f 在 /usr/bin/clickhouse
  12. ThreadPoolImplstd::__1::thread::worker(std::__1::__list_iterator<:__1::thread void>) @ 0x8bb741f in /usr/bin/clickhouse
  13. ? @ 0x8bba943 在 /usr/bin/clickhouse
  14. /usr/lib/x86_64-linux-gnu/libpthread-2.31.so 中的 start_thread @ 0x9609
  15. 在 /usr/lib/x86_64-linux-gnu/libc-2.31.so 中克隆 @ 0x122293 (版本 21.6.6.51(正式版)) (由于私有数据,我无法显示整个堆栈跟踪)

【问题讨论】:

    标签: clickhouse


    【解决方案1】:

    https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/#parsedatetimebesteffort

    https://clickhouse.tech/docs/en/sql-reference/functions/type-conversion-functions/#parsedatetimebesteffortUS

    SELECT parseDateTimeBestEffort('5/11/2021 13:10:25')
    
    
    ┌─parseDateTimeBestEffort('5/11/2021 13:10:25')─┐
    │                           2021-11-05 13:10:25 │
    └───────────────────────────────────────────────┘
    

    https://clickhouse.tech/docs/en/operations/settings/settings/#settings-date_time_input_format

    您可以在会话、查询或用户配置文件中设置date_time_input_format=best_effort。它将允许解析文本格式 CSV/TSV/JSON*,...

    【讨论】:

    • 谢谢!我已将 date_time_input_format=best_effort + 指定为 parseDateTimeBestEffort(toString(START_TIME)) 插入查询,插入成功!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多