【问题标题】:How to cast date time to snowflake timestamp while copying data from a external stage in to a table?将数据从外部阶段复制到表中时如何将日期时间转换为雪花时间戳?
【发布时间】:2023-01-02 15:34:41
【问题描述】:

我正在尝试将数据从外部阶段(天蓝色)复制到雪花表中

文件格式为 csv,其中包括日期列 - orderdate('2/24/2003 0:00') 。

我创建了表 - sales_order,列“orderdate”的数据类型为“timestamp”

sales_order 的 #csv 文件

| sales    | orderdate     |
| -------- | --------------|
| 2871     | 2/24/2003 0:00|
| 3211     | 2/25/2003 0:00|

我使用下面的复制命令将数据从外部阶段复制到表中

copy into sales_order  (sales, orderdate) from (select t.$1, to_timestamp_ntz(t.$2) from @sales_stage t)

但是复制失败并出现以下错误

Timestamp '2/24/2003 0:00' is not recognized

#预期的

有没有将订单日期加载/转换为雪花中相应日期时间格式的解决方案?

【问题讨论】:

  • 您仍然需要格式化日期!

标签: snowflake-cloud-data-platform snowflake-schema


【解决方案1】:

orderdate 列的格式需要有适当的时间信息,如

如果您尝试在 Orderdata 列中添加秒信息并尝试转换,它应该可以工作 您的订单日期列应如下所示 |销售 |订购日期 | | ------ | --------------| | 2871 | 2/24/2003 00:00:00| | 3211 | 2/25/2003 00:00:00|

如果您尝试使用指定的数据格式进行数据转换,它将失败

你可以试试这个简单的代码来测试 选择 to_timestamp_ntz('2/24/2003 0:00', 'mm/dd/yyyy hh24:mi:ss'); 失败并出现错误 - 无法将“2/24/2003 0:00”解析为格式为“mm/dd/yyyy hh24:mi:ss”的时间戳

如果你现在尝试这段代码 选择 to_timestamp_ntz('2/24/2003 00:00:00', 'mm/dd/yyyy hh24:mi:ss'); 这行得通。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2017-08-22
    • 2022-01-20
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多