• ベストアンサー

Oracleに日付や時刻のリテラルはないのか

Webで色々検索しているのですが、なかなか「これだ!」という情報に当たらず、お教えいただきたく存じます。 OracleのSQLで、日付や時間を表現するリテラルは存在しないのでしょうか? 必ず to_date(文字列, 'YYYY/MM/DD') と言うように文字列表現と関数の組み合わせでなければならないのでしょうか? to_date(文字列, 表現形式)とto_timestamp(文字列, 表現形式)を見つけたのですが、to_time(文字列, 表現形式)というのが見当たりませんでした。to_time関数は存在しないのでしょうか オラクルのSQLはバージョンによって微妙に違う、というような記述を過去ログに見つけたのですが、8と9について情報をお願いします。

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

to_dateで時刻も入れられますよ。 こんな感じです。 insert into test_table values(to_date('2002/01/01 23:59:00', 'yyyy/mm/dd hh24:mi:ss')) 時刻に関しては書式の記述方法にくせがあるので注意してください。 (hh24やmiなど)

happy_people
質問者

補足

(日付を伴わない)純粋な時刻を to_date('23:59:00','hh24:mi:ss') と表現することも可能でしょうか?

その他の回答 (2)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.3

>(日付を伴わない)純粋な時刻を to_date('23:59:00','hh24:mi:ss') >と表現することも可能でしょうか? ちょっと忘れてしまいました。 すぐ手元にOracleの環境がないもので。 to_charで、時刻のみ取り出すことは可能なはずです。 お急ぎでしたらご自分で試すほうが早いのでは?

happy_people
質問者

お礼

返事が遅くなりました。 こちらも、環境がないものですから、試せば分かるような事を いろいろ伺ってしまいました。

  • TMINET
  • ベストアンサー率32% (45/140)
回答No.2

'2002-07-26'とそのまま書いても日付型なら日付が入ると思いますけど。 時刻も'2002-07-26 00:00:00'で入れられます。

happy_people
質問者

補足

Oracleに時刻型というのが存在するのか分からないのですが、 SELECT ... FROM ... WHERE 時刻型カラム <= '23:00:00' のように記述したとき、文脈に応じてOracle側で'23:00:00'を時刻として取り扱ってくれる という理解でよろしいでしょうか? (時刻型が存在せず日付型しかない場合は、上の文章は「時刻」を「日付」に読み替えたら成り立つのかしら?)

関連するQ&A

  • oracleのDate型

    Ceate table test( field1 date ) insert into test values(current_timestamp); 上記の処理でDate型の列にcurrent_timestampデータを入れても、年月日までしかはいらないのですが、yyyy/mm/dd hh24:mi:ssの形で はできないのでしょうか?oracleは10gです。

  • 【PL/SQL】DATE型の時刻の表示と非表示

    PL/SQLでのDATE型の取扱いについて教えてください。 初期化パラメータNLS_DATE_FORMATが'YY-MM-DD'で、 ある列を'YYYY/MM/DD HH24:MI:SS'形式でDBにINSERTしたい場合、 dtWorkEndDate := to_date(charWorkEndDate, 'YYYY/MM/DD HH24:MI:SS'); としてINSERTにdtWorkEndDateを用いると、 YY-MM-DD形式でDBに登録されてしまいます。 (dtWorkEndDateはDATE型。) ORACLEの設定かPL/SQLの問題なのかわからないのですが、 なにかアドバイスを頂けないでしょうか。 よろしくお願いします。

  • to_timestampを使ったアップデート

    オラクル初心者です。 「to_timestamp」を使用したデータベースへの書き込みのSQL文が分かりません。 ツールは「つみきWEB」を使用しています。 フィールドの形式は to_timestamp(yyyy/mm/dd hh24:mi:ss.ff3)です。 行ったコマンドは以下に示します。 update (テーブル名) set (書き込みを行うフィールド) = to_timestamp('11/11 11:11:11' 、'yyyy/mm/dd hh24:mi:ss.ff3') WHERE (条件)

  • JAVAでYYYYMMDDhhmm形式の文字列をORACLE(11g)

    JAVAでYYYYMMDDhhmm形式の文字列をORACLE(11g)のDate型で定義されたカラムに反映させたいです。また逆にオラクルから取得したDate型の値をJAVAのYYYYMMDDhhmm形式の文字列に変換するにはどうしたら良いでしょうか? (1)Oracle(Date型)→Java(YYYYMMDDhhmm形式の文字列) (2)Java(YYYYMMDDhhmm形式の文字列)→Oracle(Date型) 具体的なコーディングが分からないので、サンプル的なものを提示して頂けると嬉しいです。よろしくお願いします。

  • 日付型について

    Oracleの日付型で苦労しております。 教えてください。 言語 ASP(VBscript) データベース Oracle 下記のようなプログラムを作成しました。 STARTTIME=CDate(2010/2/16 13:00:00) SYURYOTIME=CDate(2010/2/16 14:00:00) SQL="SELECT * FROM TABLE " SQL=SQL & "WHERE TO_CHAR(Field,'yyyy/mm/dd HH24:MI:SS') BETWEEN '" & STARTTIME & "' AND '" & SYURYOTIME & "'" Set rs0 = OraDatabase.DbCreateDynaset(SQL, 0) この場合は予想通りの結果を返します。 しかし、時刻を10時以前の STARTTIME=CDate(2010/2/16 08:00:00) SYURYOTIME=CDate(2010/2/16 09:00:00) にすると予想外の結果を返しません。 これは、Oracle側の形式"2010/2/16 08:00:00"で、 CDate関数側が"2010/2/16 8:00:00"となってしまうためと考えていますが、対応方法がわかりません。 何卒、ご教授くださいますようお願い致します。

  • 日付、時刻の比較について

    こんばんは。 現在、PHP4&MySQLの環境で業務アプリを 作成しております。 DBからDATE型(20060614)、TIME型(13:00:00)の データを取得して他の文字列と比較したのですが どうしてもうまく比較できません。 日付データはdate_format関数で使用して取得し strvar関数などで型変換をして比較しています。 ちなみにechoなどで実際の値を見ても同じ値でした。 やっぱり型があっていないのでしょうか? お願いします。

    • ベストアンサー
    • PHP
  • Postgreの日付関数に関して教えてください。

    Postgreの日付関数に関して教えてください。 表9.30 日付/時刻関数の例を実行していますが、 make_ で始まる関数がすべて失敗します。 PostgreSQL 9.6.2文書 9.9. 日付/時刻関数と演算子 https://www.postgresql.jp/document/9.6/html/functions-datetime.html 表9.30 日付/時刻関数 select age(timestamp '2001-04-10', timestamp '1957-06-13') select age(timestamp '1957-06-13')  : : select make_date(2013, 7, 15) select make_interval(days => 10) select make_time(8, 15, 23.5) select make_timestamp(2013, 7, 15, 8, 15, 23.5) select make_timestamptz(2013, 7, 15, 8, 15, 23.5) make_dateの失敗のメッセージ ERROR: function make_date(integer, integer, integer) does not exist LINE 1: select make_date(2013, 7, 15) ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. ********** エラー ********** ERROR: function make_date(integer, integer, integer) does not exist SQLステート:42883 ヒント:No function matches the given name and argument types. You might need to add explicit type casts. 文字:8 何が悪いのでしょうか。

  • タイムスタンプを秒数で取得したい

    DB初心者で、PostgreSQL V.7.3.2 + PHP を使っています。 T_TIME というテーブルに、 日付を格納したTARGET_DATEと、 時刻を  〃 TARGET_TIMEというフィールドがあります。 このテーブルからタイムスタンプをセレクトしたいと思い、つぎのようなSQL文を 作成しました。 SELECT TO_TIMESTAMP(TARGET_DATE ||' '|| TARGET_TIME, 'YYYY-MM-DD HH24:MI') AS JIKOKU FROM T_TIME ところが、この結果は書式化された文字列のため時刻の比較を簡単に行うことができません。 なんとか書式化した形でなく、1970年からの秒数でタイムスタンプを取得したいのですが。 どうすれば良いのでしょうか。

  • 日時の期間での抽出

    スケジュール帳のWebアプリを作成していて PostgreSQLを使用しています。 sc_tblというテーブルのday_timeというカラムに日時 to_doというカラムに予定を入れているのですが 日時2006/12/01 01:00のデータを期間の抽出条件で抽出する時 2006/11/30 20:00~2006/11/30 26:00という条件で抽出できるような SQL文はあるのでしょうか。(1:00を25:00として抽出したい) 下記2つのSQLでは無理でした。 ・その1 select day_time, to_do from sc_tbl where day_time >= cast('2006-11-30 20:00:00' as timestamp) and day_time <= cast('2006-11-30 26:00:00' as timestamp); ・その2 select day_time, to_do from sc_tbl where day_time >= to_date('2006-11-30 20:00:00','YYYY-MM-DD H24:MI:SS') and day_time <= to_date('2006-11-30 26:00:00','YYYY-MM-DD H24:MI:SS');

  • Oracleのselect文で日時表示する簡単な方法ないですか?

    SQL Plusで、select * from table とするとdata型はyyyy/mm/ddで表示されます。 いちいちto_char(time_stamp,’yyyy/mm/dd hh24:mi:ss’)とするのは苦痛なので、デフォルトで時間まで表示させる設定方法があったら教えてください。 # 私は、時々手作業でデータを集めている素人です。 # いままではSQL Serverだけだったのが、Oracleが増えて # 作法が異なるので戸惑ってます。