起初我有一个特定的列存储在我的表age
,我使用以下方法来进行选择查询基于日期的MS Access选择记录
select count(*) from DonorDetails where age < 25
现在我已删除了年龄柱和使用dob
列(使用日期/时间数据类型)。我应该如何编写与以前相同结果的计数查询?
起初我有一个特定的列存储在我的表age
,我使用以下方法来进行选择查询基于日期的MS Access选择记录
select count(*) from DonorDetails where age < 25
现在我已删除了年龄柱和使用dob
列(使用日期/时间数据类型)。我应该如何编写与以前相同结果的计数查询?
这里是你的SQL应该如何看一个示例:
SELECT count(*)
FROM DonorDetails
WHERE (((DateDiff("yyyy",[dob],Date()))>25));
cc:@abiieez用于计算此人的年龄如果该人在当年还没有达到其生日,则该查询将给出不正确的结果。例如,今天的日期是'2014-02-22',因此在'2004-12-22'出生的人仍然是9岁(事实上,他们在两个月前变成了9),但是DateDiff(“yyyy”,DateSerial (2004,12,22),Date)'返回'10'。换句话说,'DateDiff(“yyyy”,date1,date2)'实际上就是'Year(date2) - Year(date1)'的另一种写法。 –
在立即窗口中,你可以使用DateSerial
与其他日期函数的混合给你的日期在25年前从今天。
? DateSerial(Year(Date()) - 25, Month(Date()), Day(Date()))
2/22/1989
所以在您的查询,也许你想要的东西像...
WHERE [DOB] > DateSerial(Year(Date()) - 25, Month(Date()), Day(Date()))
+1 cc:@abiieez计算一个人的年龄,这是正确的答案,因为它考虑到出生的实际*日期*(而不仅仅是出生年份*)。 –
是Java标签故意的吗?因为如果是这样,大概会使用像DateSerial或DateDiff这样的VBA函数......? –
我正在使用Java – abiieez
无论执行查询的客户端环境如何,“DateSerial”和“DateDiff”函数都可以在Access SQL中随时使用。 – HansUp