我正在尝试根据两个表之间匹配的特定值创建一个新表,并且效果很好,但是当我尝试按日期过滤新加入的表时,问题就来了。
CREATE TABLE JoinedValuesTable
(
[Ref] INT IDENTITY(1,1) PRIMARY KEY,
[Parties] CHAR(50),
[Accounts] CHAR(50),
[Amount] FLOAT
);
上面的表已经创建好了,我通过将两个这样的表连接起来,将插入值连接到其中。...
INSERT INTO JoinedValuesTable ([Parties], [Accounts], [Amount])
SELECT
InputPerson.[PARTY], Input_Y.[R_Account_1], InputPerson.[Amount]
FROM
InputPerson
JOIN
Input_Y ON InputPerson.[Action] = Input_Y.[Action]
这很好,当我尝试按日期过滤似乎不起作用时。...
INSERT INTO JoinedValuesTable([Parties], [Accounts], [Amount])
SELECT
InputPerson.[PARTY], Input_Y.[R_Account_1], InputPerson.[Amount]
FROM
InputPerson
JOIN
Input_Y ON InputPerson.[Action] = Input_Y.[Action]
WHERE
InputPerson.[Date] BETWEEN '2018-01-01' AND '2018-03-03'
我在新表中没有任何值。任何人有任何想法吗?
答案 0 :(得分:3)
请勿使用between
作为日期。更好的方法是:
WHERE InputPerson.[Date] >= '2018-01-01' AND
InputPerson.[Date] < '2018-03-04'
我强烈推荐亚伦·伯特兰(Aaron Bertrand)关于此主题的博客: What do BETWEEN and the devil have in common?
这假定Date
被存储为日期/时间列。如果是字符串,则需要使用适当的转换函数将其转换为日期。
答案 1 :(得分:0)
先前回答的无耻复制/粘贴:
BETWEEN CONVERT(datetime,'2018-01-01') AND CONVERT(datetime,'2018-03-03')
原始答案:Datetime BETWEEN statement not working in SQL Server
我怀疑日期时间与字符串是罪魁祸首。结果(没有插入):
SELECT InputPerson.[PARTY], Input_Y.[R_1], Input_Y.[R_Account_1], InputPerson.[Amount]
FROM InputPerson
JOIN Input_Y ON InputPerson.[Action] = Input_Y.[Action]
WHERE InputPerson.[Date] BETWEEN CONVERT(datetime,'2018-01-01') AND CONVERT(datetime,'2018-03-03')
-编辑(在Olivier的评论后)-
您确定选择语句返回结果吗?也许“内部联接”与“从句”相结合会导致结果集为空。