我有以下SQL语句:
SELECT 420, DueDate, ISNULL(Amount, 0)
FROM Payments
WHERE CurveID = ? AND DueDate >= ?;这是我使用Delphi2010和TADODataset执行的。除了子句DueDate >= ?的计算不正确之外,该语句可以正确执行。如果我为第二个参数传入Date()或Now(),我会在DueDate字段中得到日期早于今天的返回值。
在SSMS中,如果我将date参数替换为格式为'2011-09-09‘的字符串,则可以成功运行此SQL查询:
SELECT 420, DueDate, ISNULL(Amount, 0)
FROM Payments
WHERE CurveID = 19 AND DueDate >= '2011-09-09';然而,回到Delphi语言中,即使我将参数值设置为这种格式的日期的字符串形式,也会得到不正确的结果(可能是因为TADODataset正确地将字符串转换回了日期)。
除了用硬编码到SQL中的日期构建动态SQL之外,我必须做什么才能正确地计算它?
发布于 2011-09-10 04:58:43
请尝试以下操作:
AND DueDate >= CONVERT(datetime,?);https://stackoverflow.com/questions/7367336
复制相似问题