【发布时间】:2012-12-10 17:20:31
【问题描述】:
我使用 2 个表,我希望第一个表而不是表 2 中的数据显示到数据库。
例如 *第一个表“filesTA”*
EmpNo | ChkDate
00001 | 2012-10-01 00:00:00.000
00001 | 2012-10-02 00:00:00.000
00001 | 2012-10-03 00:00:00.000
00001 | 2012-10-04 00:00:00.000
00001 | 2012-10-05 00:00:00.000
“SalaryDay2”
sEmpNo | sDate
00001 | 2012-10-01 00:00:00.000
00001 | 2012-10-02 00:00:00.000
当我选择 2012-10-01 和 2012-10-05 之间的日期时间时
我需要输出:
sEmpNo | sDate
00001 | 2012-10-03 00:00:00.000
00001 | 2012-10-04 00:00:00.000
00001 | 2012-10-05 00:00:00.000
此代码:
SELECT tf.EmpNo,tf.ChkDate
FROM filesTA tf
WHERE tf.ChkDate NOT IN(
SELECT sd2.sDate
FROM SalaryDay2 sd2
WHERE Convert(nvarchar(10),sd2.sDate,126) Between '2012-10-01' and '2012-10-05'
)
请帮助我。谢谢你的时间。:)
【问题讨论】:
-
请不要将
datetimes 转换为字符串。如果您需要在一侧的字符串和另一侧的datetime之间进行比较,请将字符串转换为datetime值。在这个特定查询中可能没有太大区别,但将日期视为字符串是日期相关错误的最大来源之一。
标签: sql sql-server sql-server-2008 datetime notin