SQL Server类型转换为DateTime字段和UNION ALL



我正面临一个奇怪的SQL Server (T-SQL)的行为,当涉及到使用UNION ALL和必须填充一个表(一个由UNION命令连接)。

表1:

Firstname  Lastname  Date
---------  --------  ----
Peter      Pan       2013-01-21 12:29:55.000
Paul       Am        2013-01-22 12:39:45.000

和表2:

FN         LN
---------  --------
Laura      Loeb
Lisa       Lefteye

我想对两个表做一个UNION ALL。这只能通过用"假的"第三列"填充"表2来实现(因为它没有"data"列),如下所示:

SELECT
  Firstname AS FName, Lastname AS LName, Date AS TheDate
FROM Table1
UNION ALL
SELECT
  FN AS FName, LN AS LName, NULL AS TheDate
FROM Table2

我的问题是:SQL Server给我一个错误消息,告诉我它不能转换为DateTime类型。

我100%确定表1中列Date的数据类型设置为DateTime,也允许NULL值。

我试着设置一个虚拟的日期,像这样:

... FN AS FName, LN AS LName, '2013-03-08' AS TheDate ...

我已经尝试设置当前日期,像这样:

... FN AS FName, LN AS LName, getdate() AS TheDate ...

以上都不行

然而,我知道一般的解决方案(通过使用"NULL AS Columnname"填充缺失的列)工作…

有谁知道如何解决这个问题吗?

提前非常感谢!

不知道是什么问题…

SELECT '1' A, '2' B, GETDATE() C
UNION ALL
SELECT '1', '2', NULL

| A | B | C |----------------------------------------| 1 | 2 | March, 08 2013 16:34:31+0000 || 1 | 2 | (null) |

你试过CAST你的NULL吗?

你已经张贴的作品很好。

SELECT 'Frank' As 'Name', 'Grimes' as 'Name2', GETDATE() as 'TheDate'
UNION ALL
SELECT 'Jim' As 'Name', 'Bloggs' as 'Name2', null as 'TheDate'

相关内容

  • 没有找到相关文章

最新更新