我有一张表格,用于在字段DateValueOf
中存储生日。我正在创建一个查询,用户可以在其中输入任何日期,查询将返回当天有生日的客户。
为此,我试图将DateValueOf
中的所有年份全年转换为当前年份。
eg > #13-10-1996# to #13-10-2016#
eg > #13-10-2001# to #13-10-2016#
然后我会要求用户从日期选择器中选择日期并运行以下查询。
SELECT CustomerID
WHERE FormatDateTime(DateValue(DateSerial(Year(Date()),Month([DateValueOf]),Day([DateValueOf]))),2) >= #13-10-2016#
但是这个SQL语句会产生错误
data type mismatch in criteria expression
请突出我的错误。提前致谢。我也愿意接受任何其他方式来获得今天的生日。
答案 0 :(得分:2)
假设您收到日期选择器控件的日期(称之为myDatePicker
),今天的日期,函数Date()
返回的日期不相关。
除非你想要年龄,Year()
也不相关。
SELECT CustomerID
FROM MyTableName
WHERE Month(myDatePicker) = Month([DateValueOf]) AND Day([DateValueOf]) = Day([myDatePicker])
如果您希望此生日的客户年龄,您可以将计算添加到SELECT子句中:
SELECT CustomerID, Year(myDatePicker) - Year(DateValueOf) As CustomerAge
FROM MyTableName
WHERE Month(myDatePicker) = Month([DateValueOf]) AND Day([DateValueOf]) Day([myDatePicker])
答案 1 :(得分:1)
不要担心格式化日期,只需使用日期比较:
SELECT CustomerID
WHERE DateSerial(Year(Date()),Month([DateValueOf]),Day([DateValueOf]))
>= #13-10-2016#