在 SQL 中向临时表添加日期列



我正在使用Netezza中的一个临时表,其中包含idgenderstart_dateend_date列。我正在尝试向此表添加一个新列,其中包含所有行的默认2019-01-01日期。我要添加此列的表是本地临时表,因此 ALTER TABLE 不起作用("错误:不允许对临时表进行操作"(。为了解决这个问题,我创建了一个带有适当名称的空列的新临时表,但现在我发现我无法使用 UPDATE/SET 用我的日期填充它("错误:值对于列来说太大"(。更改我的临时表以包含包含我的日期的新列的最佳方法是什么?如果可能的话,我想直接修改旧的临时表,而不是创建一个新的临时表。注意:我在正在使用的数据库中没有必要的管理员权限,只能创建一个永久表来 ALTER 代替。

成功创建具有空列的新临时表的代码是:

DROP TABLE new_temp_table IF EXISTS;
GO
SELECT id, gender, start_date, end_date, NULL default_date
INTO TEMP TABLE new_temp_table
FROM old_temp_table;
GO

无法替换新列中的 NULL 值的代码是:

UPDATE new_temp_table
SET default_date = '2019-01-01';
GO

NULL转换为所需的类型:

SELECT id, gender, start_date, end_date,
CAST(NULL as DATE) as default_date
INTO TEMP TABLE new_temp_table
FROM old_temp_table;

Netezza不知道类型是什么,所以它做了一个猜测。 而且这个猜测不太可能是约会(我认为这是一个int(。

最新更新