我有一个包含一些日期/时间字段的表 T1
。我已将此表上的几个查询与 UNION 查询组合在一起,并使用联合上的 SELECT INTO 创建了一个新表 T2
,如下所示:
SELECT * INTO T2
FROM (select * from query1_T1
union
select * from query2_T1)
问题是 query1_T1
将一些日期字段替换为空白字符串常量,这导致 T2 具有文本字段而不是日期/时间字段。举例说明:
query1_T1:
select myUDF(someTextField),"" as newDateField from T1
query2_T1:
select anotherUDF(someTextField),oldDateField from T1
其中 oldDateField
是日期/时间。
有没有一种方法可以构建 SELECT INTO 或更改 query1_T1
,这样我仍然可以从查询中获得相同的结果,但 newDateField
将结束作为日期/时间?
最佳答案
您始终可以单独创建表而不向其中添加数据。首先,使用适当的数据类型定义所有字段。然后使用 INSERT INTO (columns) SELECT * FROM
来填充它。
更新:
或者您可以采用混合方法。首先执行SELECT INTO
完全没有行:
SELECT * INTO T2
FROM query2_T1
WHERE 1=0
这将创建您的大部分结构。然后您可以手动调整任何未正确通过的数据类型。
适当调整结构后,您可以安全地执行此操作:
INSERT INTO T2
SELECT * FROM query1_T1
UNION
SELECT * FROM query2_T1
关于sql - 如何在 SELECT INTO 之后保留数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16343451/