MS Access在两个日期之间选择? [英] MS Access select between two dates?

查看:70
本文介绍了MS Access在两个日期之间选择?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经搜索过,但是所有结果都无法帮助我理解.

I have searched, but all results didn't help me to understand.

我需要选择18-23岁的人的名字.所以我的尝试是:

I need to select names of people who are 18-23 years old. So my try was:

WHERE ((People.Birth) Between (Now()-Year(18)) And (Now()-Year(23)))

我做错了什么?解决方案为#some_date#是个坏主意!

What I'm doing wrong? Solution as #some_date# is a bad idea!

推荐答案

要获得真正的解决方案,您需要使用 DateAdd 和类似的函数:

For a true solution, you need to use DateAdd and a function like this:

Public Function AgeSimple( _
  ByVal datDateOfBirth As Date) _
  As Integer

' Returns the difference in full years from datDateOfBirth to current date.
'
' Calculates correctly for:
'   leap years
'   dates of 29. February
'   date/time values with embedded time values
'
' DateAdd() is used for check for month end of February as it correctly
' returns Feb. 28. when adding a count of years to dates of Feb. 29.
' when the resulting year is a common year.
' After an idea of Markus G. Fischer.
'
' 2007-06-26. Cactus Data ApS, CPH.

  Dim datToday  As Date
  Dim intAge    As Integer
  Dim intYears  As Integer

  datToday = Date
  ' Find difference in calendar years.
  intYears = DateDiff("yyyy", datDateOfBirth, datToday)
  If intYears > 0 Then
    ' Decrease by 1 if current date is earlier than birthday of current year
    ' using DateDiff to ignore a time portion of datDateOfBirth.
    intAge = intYears - Abs(DateDiff("d", datToday, DateAdd("yyyy", intYears, datDateOfBirth)) > 0)
  End If

  AgeSimple = intAge

End Function

然后您的查询将具有以下 where 子句:

Then your query will have this where clause:

WHERE AgeSimple(People.Birth) Between 18 And 23

这篇关于MS Access在两个日期之间选择?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆