- - PR -
dateとdouble型変換
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2005-12-06 02:23
始めまして、現在オラクルにてシステム開発を行っておりまして、型変換にて行き詰っている状況でして、ご助力願います。
・sqlでのdate型で登録されているデータをdouble型変換 もしくは ・sqlでのdouble型で登録されているデータをdate型変換 秒単位での計算になりますので、完全イコールではなくて構わないのですが、いろいろ調査しておりましたが、なんともうまくいかない状況です。 何か方法をご存知の方がいらっしゃいましたら、お願いいたします。 環境 DB Oracle 10g Release1 OS Windows 2003 | ||||
|
投稿日時: 2005-12-06 03:20
何がどのように旨く行かないのですか? どのような結果が得られれば旨く行った事になるのですか? SYSDATE * (24 * 60 * 60)で秒数を得られますよね。それでは不都合があったと言うことですか? | ||||
|
投稿日時: 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 ] | ||||
|
投稿日時: 2005-12-06 12:46
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 22:11
みなさま、ご返答ありがとうございます。
私のやりたかったこととして、既に秒で計算されている値(基準年から)と実際のSYSDATE等の日付型の比較をSQL内で行いたかったのですが、どうやら、私の頭が硬くなっていたようです。 DATE型をDOUBLE型に変換しての比較に固執してしまっておりました。 夏椰さんのおっしゃる通り単純に基準年を引けば問題なかったです。 皆様お手間とらせました。 ありがとうございます。 | ||||
1
