Access で関数と演算子を使用して日付を変更する方法

この記事は、Microsoft Access データベース (.mdb) ファイルまたは Microsoft Access データベース (.accdb) ファイル、および Microsoft Access プロジェクト (.adp) ファイルのいずれかに適用されます。

中程度: 基本的なマクロ、コーディング、相互運用性のスキルが必要です。

概要

この記事では、Microsoft Office Access 2007、Microsoft Office Access 2003、および Microsoft Access 2002 で使用できる関数と演算子について説明します。 関数と演算子を使用して、クエリの例を使用して Date/Time データ型を変更できます。 日付値を変更するために使用できるクエリの例では、Northwind.mdb サンプル データベースのテーブルを使用します。

注:

Access 2007 の Northwind サンプル データベースでは、Northwind サンプル データベースの以前のバージョンと同じフィールドは使用されません。 Employees テーブルには、Access 2007 の Northwind サンプル データベースに含まれている HireDate フィールドと BirthDate フィールドはありません。 EmployeeID フィールドの名前が ID に変更され、FirstName フィールドの名前が [名] に変更されました。

詳細情報

Access には、日付/時刻データ型を使用してフィールドを検証または変更するための演算子と関数が用意されています。 次のクエリ例では、Access で使用できる日付操作、計算関数、および比較演算子を使用します。

Microsoft は、例示のみを目的としてプログラミング例を提供しており、明示または黙示にかかわらず、いかなる責任も負わないものとします。 これには、市販性または特定の目的との適合性についての黙示の保証も含まれますが、これに限定はされません。 この記事は、説明されているプログラミング言語、手順を作成およびデバッグするために使用されているツールに読者が精通していることを前提にしています。 Microsoft のサポート エンジニアが、特定の手順の機能をわかりやすく説明します。 ユーザー固有の要件に合わせた機能の追加、プロシージャの作成などの内容変更は行っておりません。

Date() 関数、Now() 関数、および Format() 関数

SELECT Date(), Now();

Date() 関数は、現在の日付を短い日付形式で返します。 Now() 関数は、現在の日付と時刻を返します。

SELECT Format(Now(), "dd mmmm yyyy");

Date 値を指定して Format() 関数を使用して、日付に使用する日付形式を指定できます。 次のクエリ例は、現在の日付を長い日付形式 (2003 年 12 月 1 日) で返します。

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;

Employees テーブルから、このクエリは従業員 ID、名、生年月日、および各従業員の年齢を返します。 DateDiff() 関数は、指定した 2 つの日付値の差またはタイム ラグを返します (日、月、年、時間、分、秒などの時間単位)。

DateAdd() 関数

SELECT EmployeeID, FirstName, HireDate,
DateAdd("yyyy", 10, HireDate)
FROM Employees;

Employees テーブルから、このクエリは、従業員 ID、名、雇用日、従業員が会社との 10 年間のサービスを完了した日付を返します。 DateAdd() 関数は、日付を日、月、年など、指定された時間単位数だけインクリメントし、結果の値を返します。

日付値に数値を直接追加できます。 次の例のように、日付値を日単位でインクリメントするには、これを行います。

SELECT Date() + 1 ;

このクエリは、現在の日付を 1 日ずつインクリメントし、結果の日付値を返します。

DateValue() 関数

SELECT DateValue("20 Nov 2003") AS ValidDate;

DateValue() 関数は、入力文字列が有効な日付であるかどうかを確認します。 入力文字列が有効な日付として認識された場合、日付は短い日付形式で返されます。 入力文字列が有効な日付として認識されない場合は、「条件式のデータ型の不一致」というステートメントが返されます。 DateValue() 関数は、mm dd yyyy、dd mm yy、dd mmm y、dd mmm y hh:mm:ss の長い日付形式など、さまざまな日付形式を認識します。

DateSerial() 関数

SELECT DateSerial( 2003, 03, 1-1);

DateSerial() 関数は、年、月、日の指定された入力パラメーターの日付値を返します。 入力パラメーターには、算術演算を含む式を指定できます。 DateSerial() 関数は、結果の日付値を返す前に、入力パラメーター内の式を評価します。

次のクエリ例は、2003 年の 2 月の最後の日を返します。 値が 1 の日の最後の入力パラメーターは、1 ずつデクリメントされます。 その結果、month パラメーターは 2 に評価されます。

日付値で比較演算子を使用する

次の比較演算子を使用して、式とクエリの日付値を比較できます。

  • < (より小さい)
  • > (より大きい)
  • <= (以下)
  • >= (以上)
  • <> (等しくない)
SELECT * FROM Employees
WHERE HireDate >= DateValue(" 10/01/1993")
AND HireDate <= DateValue("12/31/1993");

このクエリでは、 >= 比較演算子と = 比較演算子を <使用して、従業員の雇用日が指定された 2 つの日付の範囲に収まるかどうかを確認します。 このクエリは、1993 年の最終四半期に採用されたすべての従業員のレコードを取得します。

SELECT * FROM Employees
WHERE HireDate <> Date();

このクエリでは、不等式比較演算子を使用して、現在の日付と等しくない雇用日を持つすべての従業員のレコードをフェッチします。

WeekdayName() 関数

SELECT WeekdayName(1, False, 1) AS FirstWeekDayName;

WeekdayName() 関数は、最初のパラメーターで指定された曜日を示す文字列を返します。 返される曜日文字列は、3 番目のパラメーターによって異なります。 このパラメーターは、週の最初の日を設定します。 2 番目のパラメーターは False に設定され、曜日名を省略しないように指定します。

次のクエリ例は、日曜日の値を週の最初の日として返します。

MonthName() 関数

SELECT MonthName(1);

MonthName() 関数は、1 から 12 までの指定された月番号の月名を示す文字列を返します。 次のクエリのように、入力パラメーターを式にすることもできます。

SELECT MonthName( DatePart("m", Date()) );

このクエリは、現在の月の名前を返します。

関連情報

詳細については、次の記事番号をクリックして、Microsoft サポート技術情報の記事を表示します。

  • 290178 Microsoft Access で複雑な条件を評価するためのパラメーターを持つクエリを作成する方法
  • 290190 Microsoft Access で年齢を数か月と年単位で計算する 2 つの関数を作成する方法