【发布时间】:2015-04-16 14:22:33
【问题描述】:
我目前正在使用 sql server management studio。我有 2 张桌子。第一个表有2列,col1是smalldatetime,col2也是smalldatetime。第二个表有 3 列,一个 varchar(25) 列、一个位列和一个 smalldatetime 列。
我的问题是:对于表 1,我正在使用 smalldatetime 在第二个表中创建 varchar 字符串。我需要一种方法将 smalldatetime 创建的数字与表 2 中的 varchar 进行交叉比较。我的代码如下:
SELECT Distinct
RIGHT('0' + CAST(DATEPART(M, table1.col1) AS varchar), 2)
+ RIGHT ('0' + Cast(DATEPART(DD, table1.col1) AS varchar), 2)
+ RIGHT('0' + CAST(DATEPART(HH, table1.col1) AS varchar), 2)
+ RIGHT('0' + CAST(DATEPART(MINUTE, table1.col1) AS varchar), 2) AS 'CreatedNumber', table1.col2
FROM table1 WHERE table1.col2 IS NULL
AND [CreatedNumber] NOT IN (SELECT table2.col1 FROM table2)
我的错误出现在您看到“[CreatedNumber]”的最后一行。问题是这不是一个列名,所以我不能使用我的 creatednumber 列在 where 子句中执行任何类型的函数。我需要使用强制转换函数或创建表来执行此操作吗?
【问题讨论】: