snowflake-cloud-data-platform - 使用“纳秒”将 dateadd 表达式分配给 SQL (Snowflake) 中的变量时出错
问题描述
我正在尝试将 dateadd 表达式的结果分配给 Snowflake sql 脚本中的变量。
当我使用任何 date_or_time_part EXCEPT nanosecond 时,分配工作正常。当我使用纳秒时,我收到以下错误:
Unsupported feature 'assignment from non-constant source expression'**
纳秒的行为是否有不同的原因,或者这是一个错误?
-- 'second' is successfully set into the variable
set foo = dateadd("second" , -1, '2019-10-25');
-- 'nanosecond' throws an error:
-- Unsupported feature 'assignment from non-constant source expression'.
set bar = dateadd("nanosecond", -1, '2019-10-25');
解决方案
这确实是 Snowflake 目前的一个限制。
今天,在set
表达式中,右侧应该是一个简单的表达式,它有一个“快速”的计算路径(不要过多介绍细节)。对于“秒”,存在这样的路径,对于“纳秒”,则不存在。
您可以通过将正确的表达式设为“子查询”表达式来解决此问题,如下所示:
set x = (select dateadd(nanosecond, -1, '2019-10-25'));
推荐阅读
- c++ - 如何使用“派生输入类”创建派生类?
- oracle - 在 CSV、Excel、PDF 中生成并上传关于 get 请求结果的报告到 apex oracle
- node.js - 如何在没有互联网连接的服务器上为 nuxt.js 安装 npm 模块
- error-handling - Rust 错误:在编译时无法知道 `(dyn std::error::Error + 'static)` 类型的值的大小
- azure - 来自 Azure Functions 的莫名其妙的存储事务
- ios - CollectionCell 宽度是根据其内部的 UILabel 的固有宽度而不是实现的 sizeForItem 方法计算的
- ios - AppStore - 应用程序运行时验证(谷歌中的签名密钥)
- c# - 将 List <> 写入数据库 asp.net
- encryption - COAP 中的 AES 实施
- android - 条码扫描仪扫描空表等 Android