- ベストアンサー
秒数表示を日付表示に変更する関数(Access)
アクセス(2000以降のバージョン)での質問です。 日付表示が1970年1月1日00:00:00(グリニッジ標準時)からの 秒数表示となっているデータがあります。 このデータを「yyyy/mm/dd hh:mm:ss」(日本時間)表記に したいと考えています。 この内容をアクセスのクエリで、 秒数表示をひとつのフィールドに入れた状態で 別のフィールドに書き込める関数はあるでしょうか? できれば複数のフィールドを使わずに、 一つのフィールドのみでできるとありがたいです。 ある場合にはその方法を、 無いけどもこの方法で、というのがありましたら お教えいただけないでしょうか? アクセス自体がまだ不慣れなもので、 説明不足の箇所もあるかもしれませんが、 よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
[日付] 1970年1月1日00:00:00(グリニッジ標準時)からの秒数表示 [日本時間] (日本時間)表記 として [日本時間]=(([日付]+32400)/86400)-25569 32400秒は9時間で日本時間との時差 86400秒は1日で日付に変換 25569日は1970年1月1日のシリアル値(1990年1月1日からの通算日)
その他の回答 (1)
testテーブルに G秒数:長整数型(秒数表示) 日付:日付/時刻型 があるとして、以下のSQLで日付/時刻に変換されます UPDATE test SET test.日付 = ([G秒数]+2209161600)/24/60/60; 時差は計算していません。2209161600を適当に調整してください。
お礼
ご回答ありがとうございます。 SQLでのやりかたが判っていないので、 申し訳ないですが使えませんでした。 結局、以下の形でできました。 日付: Year((Int([秒数表示の時刻]/(60*60*24))+25569)) & "/" & Month((Int([秒数表示の時刻]/(60*60*24))+25569)) & "/" & Day((Int([秒数表示の時刻]/(60*60*24))+25569)) & " " & ((Int([秒数表示の時刻]/(60*60)+9)) Mod (24)) & ":" & ((Int([秒数表示の時刻]/60)) Mod 60) & ":" & ([a] Mod 60) *25569は1970/1/1のシリアル値
お礼
ご回答ありがとうございます。 直接ではないですが、 日数のシリアル値のみを抜き出す考えが 私にはありませんでしたので、 非常に助かりました。 ありがとうございました。