- ベストアンサー
クエリ、期限抽出。
アクセスで期限という数値型のデータがあります。 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となるだけでうまく、 日まではでてきません。 それともともと数値型のこのデータを日付/時刻型にできれば 日まででてくるのでしょうか? ここできちんとした日付/時刻型に変換できるとものすごく うれしいのですが。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
質問をちゃんと読んでなかったですね 月末日を求めるのであれば DateSerial([期限]\100,([期限] Mod 100)+1,0)
その他の回答 (4)
- gatt_mk
- ベストアンサー率29% (356/1220)
>DATEは対象の数値データが入っているフィールド名です。 は関係ありません。こちらのテストで「期限」フィールドを「DATE」という名前をつけただけです。
- gatt_mk
- ベストアンサー率29% (356/1220)
2011/09/31,2009/09/31という日は存在しないので、2011/09/30,2009/09/30と考えると下記関数でできると思います。 DateSerial(Left([期限],Len([期限])-2),Val(Right([期限],2))+1,1)-1 DATEは対象の数値データが入っているフィールド名です。
お礼
LenとRightはこういう風に使うんですね。ありがとうございました。勉強になります。
- CHRONOS_0
- ベストアンサー率54% (457/838)
日は1日で固定でよければ DateSerial([期限]\100,[期限] Mod 100,1) 期限に空欄(Null)がある場合には IIf(Not IsNull([期限]),DateSerial([期限]\100,[期限] Mod 100,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 なお、[来月の初日の前日=当月の末日]という計算をしています。
お礼
Husky2007さん、ここの域までに自分はまだ達していませんが、これがきちんと理解できるようにはやくなりたいものです、ありがとうございました。
お礼
CHRONOS_0さん、こちらのレスもありがとうございました。 関数習得させていただきます。