Snowflake - ALTER TABLE ADD COLUMN 的日期常量/文字

2023-12-01

如何定义可使用的常量/日期文字ALTER TABLE ADD COLUMN?

根据文档:

日期和时间常数

常量(也称为文字)是指固定的数据值。Snowflake 支持使用字符串常量来指定固定的日期、时间或时间戳值。字符串常量必须始终包含在分隔符之间。 Snowflake 支持使用单引号来分隔字符串常量。

例如:

date '2010-09-14'

and

表列操作

  ADD COLUMN col_name col_data_type [ DEFAULT | AUTOINCREMENT ... ] [ inlineConstraint ] [, ...]

向表中添加新列,包括可选地为该列添加默认和/或内联约束:有关列默认值的其他详细信息,请参阅创建表

...

DEFAULT <expr>

列默认值由指定的表达式定义,可以是以下任意一种:

  • 恒定值。

  • 简单的表达

  • 序列参考 (seq_name.NEXTVAL)

对于现有表 t:

CREATE TABLE t(d DATE);
INSERT INTO t(d) VALUES ('2000-01-01');

SELECT * FROM t;
-- D
-- 2000-01-01

-- addding new columns with default value works fine for these data types
ALTER TABLE t ADD COLUMN d2 INT DEFAULT 1;
ALTER TABLE t ADD COLUMN d3 STRING DEFAULT 'some string';

让我们尝试添加带有默认值的新日期列:

ALTER TABLE t ADD COLUMN d1 DATE DEFAULT '2000-01-01';
-- SQL compilation error: Default value data type does not match data type for column D1

ALTER TABLE t ADD COLUMN d1 DATE DEFAULT '2000-01-01'::DATE;
-- SQL compilation error: Invalid column default expression [CAST('2000-01-01' AS DATE)]

ALTER TABLE t ADD COLUMN d1 DATE DEFAULT date '2000-01-01';
-- SQL compilation error: Invalid column default expression [CAST('2000-01-01' AS DATE)]

-- default value during creation is possible
CREATE OR REPLACE TABLE t(d DATE DEFAULT date '2000-01-01');

看起来date '2000-01-01',应该是日期文字,被视为表达式[CAST('2000-01-01' AS DATE)]这不是一件简单的事。 它在 CREATE TABLE 上下文中起作用,但在 ALTER TABLE 上下文中不起作用。

有没有一种方法可以提供可以使用的常量/简单表达式ALTER TABLE对于日期列?


这是使用 update 语句的解决方法:

使用时间戳数据类型创建column_name

ALTER TABLE table_name ADD column_name DATE;

由于新创建的列将为空,您可以更新它:

UPDATE table_name SET column_name = cast('2022-01-01' as DATE) WHERE column_name IS NULL;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Snowflake - ALTER TABLE ADD COLUMN 的日期常量/文字 的相关文章

随机推荐

  • 从 JAR 中执行 python 文件

    我试图弄清楚如何引用 python 文件 以便我可以在 Java GUI Jar 中执行它 它需要是一个可移植的解决方案 因此使用绝对路径对我来说不起作用 我在下面列出了我的项目结构 并包含了我如何尝试执行 python 脚本的代码 我已经
  • 如何修复高图表中隐藏的数据标签?

    请看一下JSFIDDLE 此处 绿色条不显示任何值 我知道添加overflow none crop false将显示该值 但它超出了绘图区域 有时对于较大的数字 它与标题重叠 我想 仅 在条内获取绿色条值 而不是隐藏该值 对于内部的特定列
  • 淘汰打字稿扩展器

    有人可以发布一个在打字稿中扩展可观察值的示例吗 淘汰赛延长器 http knockoutjs com documentation extenders html 我从2013年3月6日开始使用这个版本的knockout d tshttps g
  • RabbitMQ SSL 与 Apring AMQP 1.4.3 连接

    我正在尝试通过 SSL 连接到 RabbitMQ 我已按照 此处 https www rabbitmq com ssl html 链接的 RabbitMQ SSL 文档进行操作 根据 RabbitMQ SSL 文档 由于已知漏洞 不建议使用
  • 验证输入字符串是有效的十进制数

    任何人都可以提供一种算法来检查输入字符串是否是正确形状和形式的十进制数 正确形状和形式的规则 最多两位小数 出于所有实际目的 最大数字是 99 999 999 99 整数部分可以使用空格 逗号或点作为组分隔符 小数部分可以使用逗号或点作为分
  • 使用 fgetcsv 将 Excel csv 导出到 php 文件

    我正在使用 Excel 2010 Professional Plus 创建 Excel 文件 稍后我尝试将其导出为 UTF 8 csv 文件 我通过将其另存为 CSV 符号分隔 抱歉 我不知道那里的确切措辞 但我没有英文版本 我担心它的翻译
  • 从 podspec 或 info.plist 检索 pod 版本到代码中

    我创建了自己的 pod 其中包含 podspec 文件 其中包含 s version 0 4 7 我希望以编程方式将其写入代码中 因此每当应用程序运行时 它都会将 pod 版本发送到服务器 另一个获取 pod 版本的地方是下面的 plist
  • Kafka Streams 2.1.1 类转换,同时刷新定时聚合以存储

    我正在尝试使用 kafka 流执行窗口聚合 并仅在某个会话窗口关闭后才发出结果 为了实现这一点 我使用了抑制功能 问题是我找不到一种方法来使这个简单的测试工作 因为当它尝试保持状态时 我得到一个类转换异常 因为它尝试将 Windowed 转
  • 为什么 fill_n() 不能与 vector.reserve() 一起使用?

    最近在学习标准库算法 有一个关于函数的问题fill n iter n val 该功能要求容器至少有n元素开始于iter 这是测试代码 Version 1 Error vector
  • 如何通过struts从一个jsp打开另一个jsp

    如何打开一个jsp来自另一个jsp通过Struts 例如 我有 2 个 JSP Page1 jsp 和 Page2 jsp 页面1 jsp不含任何表格 页面2 jsp包含一个表格 我需要一个链接页面1 jsp which 当点击时带我去页面
  • 使用sql数据库驱动程序

    最终用户 开发或生产 能否推荐一个最好使用 database sql 包的 Sql 驱动程序包 我对 Postgres ODBC MySql 可能还有其他东西 但对于大容量的东西 即不是 Sqlite 感兴趣 它们最好可以在 Windows
  • 使用 selenium 进行 Scrapy 处理需要身份验证的网页

    我正在尝试从具有大量 AJAX 调用和 javascript 执行的页面中抓取数据来呈现网页 所以我尝试使用 scrapy 和 selenium 来执行此操作 作案手法如下 将登录页面URL添加到scrapy start urls列表中 使
  • Pandas groupby 将未分组的列连接成逗号分隔的字符串

    我有以下示例 df col1 col2 col3 doc no 0 a x f 0 1 a x f 1 2 b x g 2 3 b y g 3 4 c x t 3 5 c y t 4 6 a x f 5 7 d x t
  • shapefile 中的奇怪多边形

    我正在尝试将 shapefile 应用到 ggmaps 地图 但它给了我非常奇怪的结果 有问题的形状文件是澳大利亚统计局提供的 统计本地区域 类似于邮政编码的组 形状文件here Normally I might think that it
  • BufferedWriter 不写入文本文件

    所以我用的是缓冲写入器并想将一些文本写入文本文件 try BufferedWriter b new BufferedWriter new FileWriter home usr Desktop logger logs txt b write
  • CakePHP - 如何使用自定义参数创建路由?

    我的蛋糕网址是这样的 token 9KJHF8k104ZX43 url array controller gt users action gt password reset prefix gt admin admin gt true tok
  • Post 请求在 ListView 内的 get_queryset 函数中不可用

    在ListView中 我可以轻松使用def post 自我 请求 方法从列表视图发出发布请求 但我想从以下位置发出帖子请求def get queryset 自身 我还不能做到 当我尝试这样做时 它显示 405 方法不允许 即使允许通过 po
  • 从 HeadlessGraphicsEnvironment.getDefaultScreenDevice 抛出 java.awt.HeadlessException

    我需要在java服务器上进行一些图像处理 Debian的java版本为 1 6 0 12 我从我的代码中收到 java awt HeadlessException java awt HeadlessException at sun java
  • 有没有办法获得小写的类别名称?

    我正在设置一个 WordPress 主题 并将 Facebook 喜欢 按钮集成到每个类别中 我需要一种以小写形式获取当前页面 URL 的方法 这样我就可以为所有类别设置几个类似的按钮 同时每个按钮都有不同的 url 链接 目前 当我使用
  • Snowflake - ALTER TABLE ADD COLUMN 的日期常量/文字

    如何定义可使用的常量 日期文字ALTER TABLE ADD COLUMN 根据文档 日期和时间常数 常量 也称为文字 是指固定的数据值 Snowflake 支持使用字符串常量来指定固定的日期 时间或时间戳值 字符串常量必须始终包含在分隔符