BigQuery SQL:基于现有日期列添加次日列的技术问询
整列日期批量生成次日值的解决方案
嘿,其实DATE_ADD是完全支持作用于整列的,你之前的问题应该是语法细节没处理对~我给你两种实用的解决办法,按需选择就行:
一、查询时动态生成(无需修改表结构)
如果只是想在查询结果里看到次日的日期,不用改动表本身,直接在SELECT语句里对org_day列调用DATE_ADD就行:
SELECT org_day, DATE_ADD(org_day, INTERVAL 1 DAY) AS day_after FROM 你的表名称;
要是觉得DATE_ADD写起来麻烦,部分数据库(比如MySQL)还支持更简洁的写法:
SELECT org_day, org_day + INTERVAL 1 DAY AS day_after FROM 你的表名称;
二、永久新增列并填充值
如果需要给表永久添加day_after列,并且把所有行的次日值都填充好,分两步操作:
- 先新增列(注意列类型要和
org_day保持一致,比如org_day是DATETIME就用DATETIME):
ALTER TABLE 你的表名称 ADD COLUMN day_after DATE;
- 然后批量更新所有行的
day_after值:
UPDATE 你的表名称 SET day_after = DATE_ADD(org_day, INTERVAL 1 DAY);
同样也可以用简化写法:
UPDATE 你的表名称 SET day_after = org_day + INTERVAL 1 DAY;
为啥你之前的尝试没效果?
你之前写的DATE_ADD(DATE '2019-12-22', INTERVAL 1 day)是针对常量日期的写法,但作用于列的时候,不需要给列名套DATE关键字——因为org_day本身已经是日期类型了,函数会自动识别处理,直接写列名就好啦。
内容的提问来源于stack exchange,提问作者Ron_ad
相关产品推荐
相关产品推荐

