• ベストアンサー

クエリ、期限抽出。

アクセスで期限という数値型のデータがあります。 1109,909,912.。。。 これはそれぞれ、2011/09/31,2009/09/31,2009/12/31 という風に解釈するのですが。 この数値データを ○○○○/○○/○○という風に変換というか 抽出するクエリというか式のアドバイスお願いします。 自分では苦肉の策で ([期限]-Right([期限],2))*0.01+2000 & "/" & Right([期限],2) というようなものを作ってみましたが、 これだと、2011/09,2009/09,2009/12となるだけでうまく、 日まではでてきません。 それともともと数値型のこのデータを日付/時刻型にできれば 日まででてくるのでしょうか? ここできちんとした日付/時刻型に変換できるとものすごく うれしいのですが。

質問者が選んだベストアンサー

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.5

質問をちゃんと読んでなかったですね 月末日を求めるのであれば DateSerial([期限]\100,([期限] Mod 100)+1,0)

9nainai9
質問者

お礼

CHRONOS_0さん、こちらのレスもありがとうございました。 関数習得させていただきます。

その他の回答 (4)

  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.4

>DATEは対象の数値データが入っているフィールド名です。 は関係ありません。こちらのテストで「期限」フィールドを「DATE」という名前をつけただけです。

  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.3

2011/09/31,2009/09/31という日は存在しないので、2011/09/30,2009/09/30と考えると下記関数でできると思います。 DateSerial(Left([期限],Len([期限])-2),Val(Right([期限],2))+1,1)-1 DATEは対象の数値データが入っているフィールド名です。

9nainai9
質問者

お礼

LenとRightはこういう風に使うんですね。ありがとうございました。勉強になります。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.2

日は1日で固定でよければ DateSerial([期限]\100,[期限] Mod 100,1) 期限に空欄(Null)がある場合には IIf(Not IsNull([期限]),DateSerial([期限]\100,[期限] Mod 100,1))

noname#140971
noname#140971
回答No.1

[イミディエイト] ? YYYYMMDD(1109) 2011/09/30 ? YYYYMMDD(909) 2009/09/30 ? YYYYMMDD(912) 2009/12/31 このように、YYYYMMDD関数の類を作るのが一番手っ取り早いかも知れません。 [イミディエイト] ? GetDate("2007/10/15", 0, 1) 2007/10/01 ? GetDate("2007/10/15", +1, 1) 2007/11/01 ? GetDate("2007/10/15", -1, 1) 2007/09/01 ? GetDate("2007/10/15", 0, 99) 2007/10/31 ? GetDate("2007/10/15", +1, 99) 2007/11/30 ? GetDate("2007/10/15", -1, 99) 2007/09/30 ? GetDate("2007/10/15", -1, 25) 2007/09/25 このような、当月、前月、来月の初日、末日、指定日等を求める関数を使うと容易です。 Public Function YYYYMMDD(ByVal Suji As Integer) As Date   Dim YY As Integer   Dim MM As Integer      YY = Suji \ 100 + 2000   MM = Suji Mod 100   YYYYMMDD = GetDate(CDate(YY & "/" & MM & "/01"), 0, 99) End Function Public Function GetDate(ByVal Now As Date, _             ByVal Move As Integer, _             ByVal Hiduke As Integer) As Date                GetDate = DateSerial(DatePart("yyyy", Now), _              DatePart("m", Now) + Move - (Hiduke = 99), _              Hiduke * Abs(Hiduke <> 99)) End Functio なお、[来月の初日の前日=当月の末日]という計算をしています。

9nainai9
質問者

お礼

Husky2007さん、ここの域までに自分はまだ達していませんが、これがきちんと理解できるようにはやくなりたいものです、ありがとうございました。

関連するQ&A

  • Access 抽出クエリーについての条件

    先の投稿に重複しますが、 それぞれ異なるテーブルについて、 クエリーで、、 Between #5:00# And #19:00# Between 500 And 1900 上記の方法等で同じ数値ではなく、 期間に幅をもたせて一致としそれぞれの 一致データを抽出するクエリーは つくれますか? もちろん抽出対象のテーブル、列はそれぞれ同じ書式です。 > between関数を使って、 フィールドのデータ型が日付/時刻型の場合 抽出条件欄に、 > 5:00から19:00を抽出したい、 Between #5:00# And #19:00# > 5:00から25:00を抽出したい、 Between #5:00# And #23:59# OR Between #0:00# And #1:00# Access の日付/時刻型では、25:00 というような表現はできないので、上記のように分割することになります。 > また上記がテキストだった場合も、 > 500から1900を抽出したい フィールドがテキスト型の場合、テキスト比較になり数値比較とは異なる抽出結果になるので、 フィールドに Val([テキスト型フィールド]) と式を設定して数値型に変換します。このの抽出条件に、 Between 500 And 1900 と設定します。 通報する

  • パラメータークエリの抽出ができません

    アクセスで、抽出条件に「>=[いつから] And <=[いつまで]」と日付の範囲指定をしてデータを抽出するクエリを作りましたが、表示されるパラメータに日付を入力して実行してもすべてのデータが表示されてしまいます。 どうしてでしょうか?

  • Access 日付抽出について

    Access2000のクエリにて、ある特定日付の抽出ができません。 テーブルの日付項目は、日付/時刻型です。 テーブルを開くと、「2008/02/01 12:59:00」のように見えます。 クエリで抽出する時に、「#2008/02/01#」で抽出されると思って いるのですが、実行すると抽出できません。 どのようにクエリ設定をすればよろしいでしょうか?

  • アクセスのクエリの抽出について

    当方:XP アクセス2003 アクセスのテーブルで作ったデータを クエリを使って抽出する場合・・・ 1 2 3 という数字で判別しているデータがあり、 1だけを抽出、2だけを抽出ということはできるのですが、 1or2 2or3 というような抽出はできるのでしょうか? よろしくお願いします。

  • Access2013で翌日のデータのみのクエリ

    お世話になります。 Access2013を使用しており、2つの日付フィールドを比較して 翌日のレコードのみ抜き出したい場合のクエリについて質問で ございます。 日付Aフィールド と 日付Bフィールドが あり、それぞれ日付と時刻が書式yyyy/mm/dd hhmmss で格納されております。 このうち、クエリで抽出したいのは、 日付Bフィールドに格納されている、 日付Aフィールドの翌日のレコードのみを 抽出したいです。 その際、時刻(hhmmss)は無視して翌日のレコードを 抽出したいです。 例えば、 日付Aフィールドに 2016/08/24 15:00:00 2016/08/24 16:00:00 2016/08/24 17:00:00 というデータが格納されていて、 日付Bフィールドに 2016/08/25 00:00:00 2016/08/25 17:00:00 2016/08/26 00:00:00 というデータが格納されていた場合、 日付Bフィールドの 2016/08/25 00:00:00 2016/08/25 17:00:00 のみ抽出したいです。 この場合のクエリの設定方法を教えてください。 どうぞ宜しくお願いいたします。

  • クエリで日付の抽出条件

    アクセスのクエリで日付の条件抽出をしたいのです。シャープ(#)が日付のリテラル値ということまではつき止めたのですが、ここで問題発生です。 文字列には*や?のような便利な文字が使えるのに、日付で使おうとするとエラーになってしまいます。 例えば#01/05/2?# のように2001年5月20日~29日を抽出しろ、としても出来ません。 日付抽出には*や?のような文字はないんでしょうか? どうしてもないようなら関数でもしょうがないのですが、関数だと#01/1?/?3# (2001年10月~12月のうち、03、13、23日を抽出)みたいな複雑な命令が(簡単には)出来ないような気がするんです。 どなたかお助け下さい。

  • アクセス csv出力 抽出条件

    データベース(アクセス2003)で作成されたファイルがあります。 このファイルのフィールドは"日付"、"時刻"、"設備"、"数値"のようになっています。(設備名は1~4) フィールドの条件を指定して日付ごと、加えて設備別にcsv出力を行いたいと思います。 クエリを用いて抽出条件に日付、設備名を入力してクエリを実行 そしてcsvにエクスポートという形では時間がかかりすぎるため困っています。(データは1日分が8万点ほどで年によっては設備が4つにわかれています。データは途中が抜けていたりしますが2005年~2008年まであります。) どうにかしてもっと効率的な作業を行えないでしょうか?

  • パラメータクエリで抽出がうまくいきません。

    選択クエリにて、ある日付から今日までの日付をdateiff関数で求め、 それを、DateDiff("m",[最終交換日],Date())という形で、何ヶ月経ったか表示しています。 そこまでは問題なかったのですが、 このクエリをパラメータで条件指定させようとするとうまくいきません。 たとえば、選択クエリのデザインビューで、抽出条件に、>=9、と直接入力すると、 9ヶ月以上のレコードを抽出するのですが、 >=[何ヶ月以上経ったものを探しますか?]と入力し、 パラメータ入力のウィンドウで9を入力すると、抽出されません。 どの数値を入力しても、直接入力ではうまくいくのですが、 パラメータウィンドウから入力するとダメのようです。 いろいろ参考になりそうサイト等見てはみましたが、 原因となりそうなものを見つけることができませんでした。 これが原因では?と、お分かりになる方、 是非教えていただきたく思い、質問いたしました。 よろしくお願いいたします。

  • Accessでの抽出について

    Accessでのクエリーでの抽出の方法を教えてください。 たとえば「12345678」といったIDをもたせた人のデータが日付ごとにいくつかレコードがある場合に、クエリーのID欄の抽出条件欄には、「12345678」と入力すれば、その人のデータのみが表示されると思います。 そこで、 (1)その中の日付から、最新のものから3つを抽出したい場合。 (2)その中の日付から、2番目に新しいものを抽出したい場合。 において、クエリーの抽出条件になんて書いたらよいのでしょうか? できましたら、(1)(2)それぞれお答えいただければ幸いです。 どうぞよろしくお願いいたします。

  • アクセスの抽出クエリについて

    従業員の労務管理をアクセスで行っています。 個人個人が社員コードを入力して自分の勤怠を処理しますが、1人だけ不具合がおきています。 このような抽出クエリで特定のデータに限って抽出しない場合、どんな原因が考えられるのでしょうか。対応策をご存知の方ヘルプミーです!! テーブル テキスト型でコード番号を登録 クエリ  コード番号を指定して抽出 コード番号は0001~1000といった四桁のコードを使用 『0029』コードのみ抽出が不可能 (1) 登録してあるデータのコードを直接コピーして抽出条件に貼り付けると『"0029』と頭側一方のみ『"』が付き抽出することができる。 (2) 次ににキーボードから『0029』と入力すると『"0029"』となり、抽出できない。 (3) キーボードから『"0029』と入力すると抽出できない。 なぜか??