Help and Support
 

powered byLive Search

如何使用 Access 中的函数和运算符更改日期

文章编号:826766
最后修改:2008年8月27日
修订:3.0
本文既适用于 Microsoft Access 数据库 (.mdb) 文件或 Microsoft Access 数据库 (.accdb) 文件,也适用于 Microsoft Access 项目 (.adp) 文件。

中级用户:要求具备基本的宏、编码和互操作技能。

概要

本文介绍 Microsoft Office Access 2007、Microsoft Office Access 2003 和 Microsoft Access 2002 中可用的函数和运算符。您可以通过示例查询来使用这些函数和运算符更改“日期/时间”数据类型。可用于更改日期值的示例查询使用 Northwind.mdb 示例数据库中的表。

注意:Access 2007 的罗斯文示例数据库所使用的字段不同于早期版本的罗斯文示例数据库。在 Access 2007 的罗斯文示例数据库中,“雇员”表不包含“雇用日期”和“出生日期”字段。此外,“雇员 ID”已重命名为“ID”。

回到顶端

更多信息

Access 提供了一些运算符和函数,用于验证或更改属于“日期/时间”数据类型的字段。下列示例查询使用 Access 中提供的日期操作、计算函数和比较运算符。

Microsoft 提供的编程示例只用于演示目的,不附带任何明示或暗示的保证。这包括但不限于对适销性或特定用途适用性的暗示保证。本文假定您熟悉所演示的编程语言以及用于创建和调试过程的工具。Microsoft 支持工程师可以帮助解释某个特定过程的功能。但是他们不会修改这些示例以提供额外的功能,也不会构建过程以满足您的特定要求。
?

Date() 函数、Now() 函数和 Format() 函数

SELECT Date(), Now();
Date() 函数以短日期格式返回当前日期。Now() 函数返回当前日期和时间。
SELECT Format(Now(), "dd mmmm yyyy");
您可以对日期值使用 Format() 函数来指定要用于该日期的日期格式。此示例查询以长日期格式 (01 December 2003) 返回当前日期。
?

Day() 函数、WeekDay() 函数、Month() 函数和 Year() 函数

SELECT HireDate, Day(HireDate) AS Day,
Weekday(HireDate) AS WeekDay,
Month(HireDate) AS Month, Year(HireDate) AS Year 
FROM Employees;
此查询可从“雇员”表中返回每个雇员的雇用日期、雇用日、雇用日是星期几、雇用月份以及雇用年份。请注意,WeekDay() 函数返回一个指示星期几的数值。
?

DatePart() 函数

SELECT *  FROM Employees 
WHERE DatePart("yyyy", BirthDate) < 1960;
此查询可从“雇员”表中返回出生日期早于 1960 年的所有雇员。DatePart() 函数可用于提取指定日期的各个部分,例如日、月或年。
?

DateDiff() 函数

SELECT EmployeeID, FirstName, BirthDate,
DateDiff("yyyy", BirthDate, Date()) AS Age
FROM Employees;
此查询可从“雇员”表中返回每个雇员的雇员 ID、名字、出生日期和年龄。DateDiff() 函数返回两个指定日期值的差或时滞(用日、月、年或小时、分钟和秒钟等时间单位表示)。
?

DateAdd() 函数

SELECT EmployeeID, FirstName, HireDate,
DateAdd("yyyy", 10, HireDate)
FROM Employees;
此查询可从“雇员”表中返回雇员 ID、名字、雇用日期以及雇员在公司服务满 10 年后的日期。DateAdd() 函数可在某一日期上增加指定数目的时间单位(例如日、月或年),然后返回所得到的值。

您可以直接在日期值上添加数值。这样做会以天为单位增加该日期值,如下面的示例所示:
SELECT Date() + 1 ;
此查询可在当前日期上增加一天,然后返回得到的日期值。
?

DateValue() 函数

SELECT DateValue("20 Nov 2003") AS ValidDate;
DateValue() 函数验证输入字符串是否为有效日期。如果输入字符串被识别为有效日期,则会以短日期格式返回该日期。如果输入字符串未被识别为有效日期,则返回“标准表达式中数据类型不匹配”语句。DateValue() 函数可识别各种日期格式,例如 mm dd yyyy、dd mm yyyy、dd mmm yyyy 和 dd mmm yyyy hh:mm:ss 长日期格式。
?

DateSerial() 函数

SELECT DateSerial( 2003,  03, 1-1);
DateSerial() 函数返回年、月和日的指定输入参数的日期值。输入参数可以是包含算术运算的表达式。DateSerial() 函数会先计算输入参数中的表达式,然后返回得到的日期值。

此示例查询返回 2003 年 2 月的最后一天。该日期最后一个输入参数的值为 1 减 1。结果则将月参数计算为 2。
?

对日期值应用比较运算符

您可以使用下列比较运算符在表达式和查询中比较日期值:
?<(小于)
?>(大于)
?<=(小于或等于)
?>=(大于或等于)
?<>(不等于)
SELECT * FROM Employees
WHERE HireDate >= DateValue(" 10/01/1993")
AND HireDate <= DateValue("12/31/1993");
此查询使用 >= 和 <= 比较运算符验证雇员的雇用日期是否处于两个指定日期之间的范围内。它将提取在 1993 年最后一个季度中雇用的所有雇员的记录。
SELECT * FROM Employees
WHERE HireDate <> Date();
此查询使用不等于比较运算符提取雇用日期不等于当前日期的所有雇员的记录。
?

WeekdayName() 函数

SELECT WeekdayName(1, False, 1) AS FirstWeekDayName;
WeekdayName() 函数会返回一个字符串,用于指示第一个参数中指定的星期几。返回的星期几字符串取决于第三个参数。此参数设置一周中的第一天。第二个参数设置为 False,用于指定不得缩写星期几的名称。

此示例查询返回值“Sunday”作为一周的第一天。
?

MonthName() 函数

SELECT MonthName(1);
MonthName() 函数会返回一个字符串,用于指示指定月份编号(从 1 到 12)所代表的月份名称。输入参数也可以是表达式,如以下查询所示:
SELECT MonthName( DatePart("m", Date()) );
此查询可返回当前月份的名称。

回到顶端

参考

有关更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
290178 (http://support.microsoft.com/kb/290178/) 如何在 Microsoft Access 中创建通过参数计算复杂条件的查询
290190 (http://support.microsoft.com/kb/290190/) 如何在 Microsoft Access 中创建两个分别以月和年为单位计算年龄的函数

回到顶端


这篇文章中的信息适用于:
?Microsoft Office Access 2007
?Microsoft Office Access 2003
?Microsoft Access 2002 标准版

回到顶端

关键字:?
kbdownload kbfunctions kbdatetime kbvalidation kbquery kbdatabase kbinfo KB826766

回到顶端

Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

文章翻译

 

Related Support Centers

Other Support Options

  • Need More Help?
    Contact a Support professional by E-mail, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.