比较sql insert语句中的日期

时间:2014-12-04 21:14:46

标签: sql vba access-vba ms-access-2010

我试图通过vba访问使用sql从另一个表中插入记录。一切正常但我想要一个包含日期的字段大于用户输入的第一年。当我将该命令添加到我的语句中时,没有插入任何记录,我很确定这是因为我没有正确比较日期。我是sql的新手,所以任何关于这个问题的帮助以及如何修复它将非常感谢!我已在下面发表声明。

verifHPMS = "INSERT INTO HPMSVerified([CLIENT ID], [CLIENT NAME], [MARKET SEGMENT], [FORMULARY ID], [FORMULARY NAME], [FORMULARY VERSION],[HPMS EXPORTED],[HPMS EXPORT DATE],[APPROVED DATE]) " & _
            "SELECT DD.[CLIENT ID],DD.[CLIENT NAME],DD.[MARKET SEGMENT],DD.[FORMULARY ID],DD.[FORMULARY NAME],DD.[FORMULARY VERSION],DD.[HPMS EXPORTED],DD.[HPMS EXPORT DATE],DD.[APPROVED DATE] " & _
            "FROM " & tableName & " as DD " & _
            "Where DD.[HPMS EXPORTED] IN (""Yes"") " & _
            "AND DD.[HPMS EXPORT DATE] >= [APPROVED DATE] " & _
            "AND DD.[CLIENT ID] NOT IN(SELECT Exclusions.[Client ID] FROM Exclusions)" & _
            "AND DD.[APPROVED DATE]>01/01/" & year

2 个答案:

答案 0 :(得分:1)

尝试用此替换最后一行:

"AND YEAR(DD.[APPROVED DATE]) >= " & year & " AND MONTH(DD.[APPROVED DATE]) > 1 AND DAY(DD.[APPROVED DATE]) > 1"

单独比较日期的每个组成部分,以避免出现日期文字问题和字符串插值的手动方法。

答案 1 :(得分:0)

将最后一行替换为:

"AND DD.[APPROVED DATE] > #01/01/" & year & "#"

请注意,无论区域设置如何,VBA和“Jet”SQL始终使用#m / d / y#format作为日期文字。