- PR -

dateとdouble型変換

1
投稿者投稿内容
さてつ
会議室デビュー日: 2005/12/06
投稿数: 2
投稿日時: 2005-12-06 02:23
始めまして、現在オラクルにてシステム開発を行っておりまして、型変換にて行き詰っている状況でして、ご助力願います。

・sqlでのdate型で登録されているデータをdouble型変換
もしくは
・sqlでのdouble型で登録されているデータをdate型変換

秒単位での計算になりますので、完全イコールではなくて構わないのですが、いろいろ調査しておりましたが、なんともうまくいかない状況です。

何か方法をご存知の方がいらっしゃいましたら、お願いいたします。

環境
DB Oracle 10g Release1
OS Windows 2003
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-12-06 03:20
引用:

さてつさんの書き込み (2005-12-06 02:23) より:
始めまして、現在オラクルにてシステム開発を行っておりまして、型変換にて行き詰っている状況でして、ご助力願います。
・sqlでのdate型で登録されているデータをdouble型変換
もしくは
・sqlでのdouble型で登録されているデータをdate型変換
秒単位での計算になりますので、完全イコールではなくて構わないのですが、いろいろ調査しておりましたが、なんともうまくいかない状況です。


何がどのように旨く行かないのですか?
どのような結果が得られれば旨く行った事になるのですか?
SYSDATE * (24 * 60 * 60)で秒数を得られますよね。それでは不都合があったと言うことですか?
明智重蔵
大ベテラン
会議室デビュー日: 2005/09/05
投稿数: 127
投稿日時: 2005-12-06 09:02
日を秒にするのは
select to_char(sysdate,'sssss') from dual;

秒を日にするのは
割り算の商と余りを使えばいいと思います

参考サイト
http://oraclesqlpuzzle.hp.infoseek.co.jp/7-25.html
http://oraclesqlpuzzle.hp.infoseek.co.jp/7-26.html

[ メッセージ編集済み 編集者: 明智重蔵 編集日時 2005-12-06 12:58 ]
今川 美保(夏椰)
ぬし
会議室デビュー日: 2004/06/10
投稿数: 363
お住まい・勤務地: 神奈川県茅ヶ崎市
投稿日時: 2005-12-06 12:46
引用:

さてつさんの書き込み (2005-12-06 02:23) より:
始めまして、現在オラクルにてシステム開発を行っておりまして、型変換にて行き詰っている状況でして、ご助力願います。

・sqlでのdate型で登録されているデータをdouble型変換


doubleってnumber型だと思っていいですかね?

日付計算の基準日となる日を決めて、
(計算対象列-基準日) * 24 * 60 * 60 をnumber型の列へInsertOrUpdateできるので
これで対応できませんか?

#ちなみにですが、Oracle9iR2で
#SELECT SYSDATE * (24 * 60 * 60) FROM DUAL;
#を実行すると
#「ORA-00932: データ型が一致しません: NUMBERが予想されましたがDATEです」
#がSYSDATEに対してでちゃいます。
#なので、日付計算を行った結果に対し、24 * 60 * 60をすべきかと思います。
さてつ
会議室デビュー日: 2005/12/06
投稿数: 2
投稿日時: 2005-12-06 22:11
みなさま、ご返答ありがとうございます。

私のやりたかったこととして、既に秒で計算されている値(基準年から)と実際のSYSDATE等の日付型の比較をSQL内で行いたかったのですが、どうやら、私の頭が硬くなっていたようです。
DATE型をDOUBLE型に変換しての比較に固執してしまっておりました。
夏椰さんのおっしゃる通り単純に基準年を引けば問題なかったです。

皆様お手間とらせました。
ありがとうございます。

1

スキルアップ/キャリアアップ(JOB@IT)