| DATESERIAL関数で文字列を日付型 (Date)に変換する | ||||
SQL = " SELECT DATESERIAL(Year,Month,Day) FROM テーブル名 " 又は、 SQL = " SELECT DATESERIAL(Year,Month,Day) AS 名前 FROM テーブル名 " Set rs = CurrentDb.OpenRecordset(SQL) DATESERIAL で文字列を日付型 (Date)に変換することができます。 月(Month)は 1 ~ 12、日(Day)は 1 ~ 31 の範囲でないと正常な日付を返しません。 引数、年(Year)月(Month)日(Day)がNullの場合や、数値として扱えない場合、「抽出条件でデータ型が一致しません」のエラーが発生します。 例: SQL = " SELECT DATESERIAL(年,月,日) AS 来客日 FROM 顧客管理 " 顧客管理テーブルの年,月,日フィールドを来客日として取得します。
サンプルソフト [実行時の画面] 「文字列を日付型 (Date)に変換する DATESERIAL関数」ボタンをクリックすると、 年・月・日フィールドから日付型に変換し、左のテキストボックスに表示します。 日付型であることが分かるように、右のテキストボックスにDateAddで一ヶ月を加え表示しています。 ■実行画面 ![]() [サンプルデータ テーブル] データID 年 月 日 10 2007 3 21 11 2007 5 30 13 2007 11 26 16 2007 12 1 17 2007 12 15 18 2007 12 31 ![]() [コード] Option Compare Database Private Sub コマンド8_Click() Dim SQL As String Dim rs As Recordset Me!テキスト1 = "DATESERIAL値" & vbCrLf Me!テキスト2 = "一ヶ月後の日付" & vbCrLf SQL = "SELECT DATESERIAL(年,月,日) FROM サンプルデータ" Set rs = CurrentDb.OpenRecordset(SQL) Do Until rs.EOF Me!テキスト1 = Me!テキスト1 & rs(0) & vbCrLf Me!テキスト2 = Me!テキスト2 & DateAdd("m", 1, rs(0)) & vbCrLf rs.MoveNext Loop Set rs = Nothing End Sub [変換できない場合のエラー] ・年、月、日フィールドがNULLの場合は、NULLが返ります。 ・年、月、日フィールドに数値にできない文字がある場合は、NULLが返ります。 ・例えば、2007、13、21のように月が異常な場合、「2008/01/21」が返り一ヶ月が加算され正常な日付になっています。 ・例えば、2007、3、32のように日が異常な場合、「2007/04/01」が返り一日が加算され正常な日付になっています。
ダウンロード |
||||
Copyright(C) 2007-2008 FeedSoft