我有这个返回Conversion failed when converting date and/or time from character string.
(
@numberRecords int,
@date varchar(12)
)
AS
SET ROWCOUNT @numberRecords
SELECT re.ID, re.RecentChangeTypeID, re.LogID, re.RevisionID
FROM RecentChanges re
FULL OUTER JOIN Revisions rev
ON re.RevisionID = rev.ID
FULL OUTER JOIN Logs lg
ON re.LogID = lg.ID
WHERE convert(datetime, rev.Timestamp) >= '@date' OR
convert(datetime, lg.Timestamp) >= '@date';
RETURN
date
参数以“dd-MM-yyyy”格式返回字符串值。可能是什么原因?
答案 0 :(得分:4)
不要将@date
参数放在单引号内 - 它被解释为字符串而不是参数。
如上所述,您尝试将'@date'
设为datetime
,但不会解析。
话虽这么说,你应该首先将输入参数设为datetime
。
答案 1 :(得分:1)
删除@JNK描述的单引号,以使查询正常工作。但是,为了获得更好的性能(索引使用),请尝试此查询(如果列Revisions.Timestamp
和Logs.Timestamp
上有索引):
SELECT
re.ID, re.RecentChangeTypeID, re.LogID, re.RevisionID
FROM RecentChanges re
INNER JOIN Revisions rev ON re.RevisionID = rev.ID
WHERE rev.Timestamp >= @date
UNION
SELECT
re.ID, re.RecentChangeTypeID, re.LogID, re.RevisionID
FROM RecentChanges re
INNER JOIN Logs lg ON re.LogID = lg.ID
WHERE lg.Timestamp >= @date
答案 2 :(得分:0)