[解決済み] ORA-01849: 時間は 1 から 12 の間でなければなりません。
2022-02-05 07:12:42
質問
WHERE (ResTRRequest.RequestTime BETWEEN TO_CHAR(TRUNC(TO_DATE('2012-12-01 20:10:10', 'HH')), 'YYYY-MM-DD HH24:MI:SS')
AND TO_CHAR(TRUNC(CURRENT_TIMESTAMP, 'HH') + INTERVAL '59:59' MINUTE TO SECOND, 'YYYY-MM-DD HH24:MI:SS'))
クエリに上記のwhere条件があり、それを実行すると、私が与えた静的な日付、すなわち''2012-12-01 20:10:10', 'HH')のために時間が1〜12の間でなければならないと表示されました。
どうすればいいですか?
少し分解してみましょう。
WHERE (ResTRRequest.RequestTime
BETWEEN TO_CHAR(TRUNC(TO_DATE('2012-12-01 20:10:10', 'HH')), 'YYYY-MM-DD HH24:MI:SS')
AND TO_CHAR(TRUNC(CURRENT_TIMESTAMP, 'HH') + INTERVAL '59:59' MINUTE TO SECOND, 'YYYY-MM-DD HH24:MI:SS'))
そもそも、こんな意味じゃないでしょう。
TRUNC(TO_DATE('2012-12-01 20:10:10', 'HH'))
たぶん、こういうことだと思います。
TRUNC(TO_DATE('2012-12-01 20:10:10'), 'HH')
. 1~12までの数字は、1時間の間に
20
というマスクで日付に変換しようとしています。
HH
. でも、さっきも言ったようにタイプミスだと思うんです。また
TIMESTAMP
を使用するのではなく、ここでリテラル
TO_DATE()
:
TRUNC(TIMESTAMP'2012-12-01 20:10:10', 'HH')
次に、念のためですが、日付やタイムスタンプを文字列として保存していますか? それはよくないな。
3つ目は、「Security(セキュリティ)」です。
BETWEEN
を日付の比較で使用すると、エッジケースを見逃す可能性があるからです。以下のように書き換えた方がいいかもしれません。
WHERE ( ResTRRequest.RequestTime >= TO_CHAR(TRUNC(TO_DATE('2012-12-01 20:10:10'), 'HH'), 'YYYY-MM-DD HH24:MI:SS')
AND ResTRRequest.RequestTime < TO_CHAR(TRUNC(CURRENT_TIMESTAMP, 'HH') + INTERVAL '1' HOUR, 'YYYY-MM-DD HH24:MI:SS') )
関連
-
ORCALテンポラリーテーブルの作成と削除
-
Oracle12Cのデフォルトのユーザー名とシステムパスワードが正しくない場合の解決策
-
Oracle Temporary Tablespace SQLステートメントの実装
-
Oracle PL/SQLを使用して電子メール機能(UTL_MAIL)を実装する方法
-
[解決済み] エラーを取得する - ORA-01858: 数値が期待される場所で非数値文字が見つかりました。
-
[解決済み] エラー発生 - ORA-01858: 数値が期待される場所に非数値の文字が見つかりました。
-
[解決済み] ORA-01882: タイムゾーン領域が見つかりません。
-
[解決済み] Oracleのテーブル名の最大長は?
-
[解決済み] ORA-12545: ターゲットホストまたはオブジェクトが Mac に存在しないため、接続に失敗しました - SQLPLUS
-
[解決済み] ORA-04063: パッケージ本体 "WB_PROD.PLOG" にエラーがあります。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Oracle Dbeaver ストアドプロシージャの構文説明
-
オラクルのブロック修正追跡機能の説明
-
[解決済み】ORA-00932: 整合性のないデータ型: 予想される - CLOB を取得しました。
-
[解決済み】Oracle Databaseで「SET DEFINE OFF」を使用するタイミングと理由
-
[解決済み] Oracle 12c: TNS-12535: TNS:操作がタイムアウトしました。
-
[解決済み] ORA-30036: アンドゥ テーブルスペース 'UNDOTBS' でセグメントを 8 つ拡張できません。
-
[解決済み] PLS-00382: 式が不正です。
-
[解決済み] PLS-00103:次のいずれかを期待しているときに、記号"; "に遭遇しました。
-
[解決済み] ORA-29283: 無効なファイル操作 ORA-06512: "SYS.UTL_FILE", 行 536 で。
-
[解決済み] ORA-4031 "unable to allocate x bytes of shared memory" を解決する。