与日期时间解析作斗争

Struggling with Datetime Parsing

我可以使用一些内部 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” 错误:日期时间必须采用 YYYY-MM-DD hh:mm:ss 或 NNNNNNNNNN(unix 时间戳,恰好 10 位数字)格式。

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

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

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*,...