• ベストアンサー

日付の切り出し方法について

OracleのSQLにおいて、 日付の値を指定した文字だけ切り出して取得する方法がわかりません。 例えば、日付型の"9999/01/15"という値から "9999/01/"という値だけ切り出すことは可能でしょうか? 基本的な質問で申し訳ございませんが、 どなたかご教授いただけませんでしょうか? よろしくお願いいたします。

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

  • ベストアンサー
  • entree
  • ベストアンサー率55% (405/735)
回答No.2

to_char(to_date('9999/01/15', 'YYYY-MM-DD'), 'YYYY/MM/') でもいいですが、 substr('9999/01/15', 1, 8) の方がオーバーヘッドが軽そうですね。 性能も含めて両方試してみると良いでしょう。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

単純に文字列変換したいのならto_charの書式指定 select to_char( sysdate, 'YYYY/MM'/' ) from dual DATE型のまま、日付を切り捨てたいのならTRUNC関数 http://www.shift-the-oracle.com/sql/functions/trunc-datetime.html

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 生年月日から年齢を取得する方法

    Oracle9i 9.2.0.1.0 タイトル通りなのですが、SQLで生年月日から年齢を取得する方法があればご教授ください。 (基本的な質問ですが、検索してもなかったもので申し訳ありません。)

  • 日付算出の方法

    Oracle9iを使用しておりますが 下記の様なテーブルが存在し、ユーザーより任意の日付を指定して貰い、 指定された日付の直近のレコードを抽出したいのですが方法が分かりません。 どなたか御教授お願いします。 例) 日付マスタ 日付 ---------- 2001/12/01 2001/12/12 2002/01/01 2002/03/22 2003/01/02

  • Oracle(オラクル)で、日付時刻型の検索方法について

    質問させていただきます。 データベースはオラクルを使っていて、 SQL文で、抽出するときにエラーが出て困っています。 日付時刻型が「2005/05/26 19:13:00」という感じで入ってます。 2005/05/26 を抽出したいのですが、 BETWEEN '2005/05/26 00:00:00' AND '2005/05/26 23:59:59' だと、エラーでできません。 どなた様か、ご教授よろしくお願いしますm(_ _)m

  • 日付の最大値を検索条件にする方法

    お世話になります。 ORACLEのMAX()関数を使用して、 下記内容を取得するSQLを作成しています。 ・商品テーブルから商品コードを取得したい ・上記の取得条件として、商品テーブルの日付項目が最新日付のレコードのみを 取得したい ・上記の取得条件に加えて、指定したいくつかの商品に該当するもののみを 検索対象としたい 【SQLサンプル】 SELECT 商品コード FROM 商品テーブル WHERE 商品コード IN (101, 102, 103) AND 在庫区分 = '0' AND 日付 = (SELECT MAX(日付) FROM 商品テーブル WHERE 商品コード IN (101, 102, 103) AND 在庫区分 = '0' ) AND ランク = (SELECT MAX(ランク) FROM 商品テーブル WHERE 商品コード IN (101, 102, 103) AND 在庫区分 = '0' ) 上記以外の書き方で何か良い書き方があれば、 ご教授願えますか? よろしくお願いいたします。

  • VBAからoracleに接続しSQLで日付絞込み

    かなりの素人で申し訳ありません。初心者です。 EXCEL2016を使用し、VBAからoracleに接続、日付のカラムを範囲指定して検索、excelに出力するツールを作成しています。 テーブル:注文テーブル 項目:注文番号、項番、納期 納期は日付型です。 注文番号を指定してデータの取得はできているのですが、納期を指定すると「実行時エラー ODBCドライバーは要求されたプロパティをサポートしていません」とエラーになります。日付指定の方法が違うのではと推測するも解決しません。ご教授頂けないでしょうか。 SQL = “SELECT 注文番号, 項番, 納期 FROM 注文テーブル WHERE 納期 BETWEEN #2021/01/01# AND #2021/01/31#;”

  • 週の開始日・終了日を求めるSQL

    ISO規格の年+週(TO_DATEの書式のIYYY+IW)から実際の日付を取得する方法に苦戦しています。 例えば「2008年1週」という値を受け取ると、週の開始日「2007/12/31」または終了日「2008/1/6」という値を返すようにしたいのです。 これをSQLまたはPL/SQLで実現したいのですが、いいヒントがありましたらご教授願います。 ORACLE10を使っています。

  • 日付計算について

    OSはunixでc言語、Oracleを使ってます。 文字型の日付データ(YYYYMMDD)を元に、-n日を取得する方法を教えていただきたいのですが。 宜しく御願い致します。

  • 変数から日付を取得したい

    こんにちは。 日付の入った変数から年月日を別々に取得したいのです。 いろいろ調べてみたのですが方法が見つかりませんでした。 substrで取得すると一桁の月の時、「-8」と取得してしまうので 日付として取得する方法があるのなら教えて頂けますか。 $date 格納されている値→2007-08-10 00:00:00 取得したい形は 「2007」「08」「10」 PHP4です。 何か良い方法があれば、ご教授ください。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • LINUXでの日付計算について

    こんにちわ。 初心者でしてお恥ずかしい質問をしてしまいますが、、、 LINUX上で、現在日付から、2008/04/01を差し引いた値を日単位で 取得したのですが、どのようにやると効率的でしょうか。 いい方法があればご教授頂けると幸いです。

  • 日付型について

    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"となってしまうためと考えていますが、対応方法がわかりません。 何卒、ご教授くださいますようお願い致します。

このQ&Aのポイント
  • DCP-J973Nのファームウェア更新方法を紹介します。パスワードを忘れた場合でも問題ありません。
  • Windows10で無線LAN接続を使用する場合の設定方法について解説します。
  • ひかり回線を使用している場合、DCP-J973Nの電話回線の設定についてご説明します。
回答を見る