2014-02-22 44 views
1

起初我有一个特定的列存储在我的表age,我使用以下方法来进行选择查询基于日期的MS Access选择记录

select count(*) from DonorDetails where age < 25 

现在我已删除了年龄柱和使用dob列(使用日期/时间数据类型)。我应该如何编写与以前相同结果的计数查询?

+1

是Java标签故意的吗?因为如果是这样,大概会使用像DateSerial或DateDiff这样的VBA函数......? –

+0

我正在使用Java – abiieez

+1

无论执行查询的客户端环境如何,“DateSerial”和“DateDiff”函数都可以在Access SQL中随时使用。 – HansUp

回答

1

这里是你的SQL应该如何看一个示例:

SELECT count(*) 
FROM DonorDetails 
WHERE (((DateDiff("yyyy",[dob],Date()))>25)); 
+1

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)'的另一种写法。 –

3

在立即窗口中,你可以使用DateSerial与其他日期函数的混合给你的日期在25年前从今天。

? DateSerial(Year(Date()) - 25, Month(Date()), Day(Date())) 
2/22/1989 

所以在您的查询,也许你想要的东西像...

WHERE [DOB] > DateSerial(Year(Date()) - 25, Month(Date()), Day(Date())) 
+0

+1 cc:@abiieez计算一个人的年龄,这是正确的答案,因为它考虑到出生的实际*日期*(而不仅仅是出生年份*)。 –