0

比較TIMESTAMPする前に変換する必要がありますか? DATE元:

AND SORD.CREATED >= TO_DATE(FROM_TZ(CAST(TO_DATE('','DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP), 'Asia/Kuala_Lumpur') AT TIME ZONE 'UTC','DD-MON-YYYY HH24:MI:SS')
AND SORD.CREATED < TO_DATE(FROM_TZ(CAST(TO_DATE('','DD-MON-YYYY HH24:MI:SS') AS TIMESTAMP), 'Asia/Kuala_Lumpur') AT TIME ZONE 'UTC','DD-MON-YYYY HH24:MI:SS')

私はまだ新しく、データベースについて学んでいるので、意見を探しています。

4

1 に答える 1

1

使用しているデータベースを正確に伝えるのは困難です。あなたが提供したコードの関数から、私はOracleを推測していますか? 確認してください。

一般的に、私はあなたに次のことを伝えることができます:

  • 値を渡していません。への最初のパラメーターTO_DATEは空で、日付に変換する文字列が含まれます。

  • データベースの値が何であるかを知る必要があります。またはデータ型ですかSORD.CREATED? UTC 値を保持しますか? そうであれば、クエリを実行する前に現地時間を UTC に変換する必要があります。可能であれば、クエリ自体の外でこれを行う必要があります。DATETIMESTAMP

  • データベース内の値のタイプが の場合、質問で示したように、関数でorをTIMESTAMP WITH TIME ZONE使用できます。DATETIMESTAMPAT TIME ZONE

  • 不必要に文字列との間でキャストしないでください。ソース データが既にDATEまたはTIMESTAMPデータ型である場合、文字列に変換する必要はありません。日付が日付になったら、日付を維持する必要があります。文字列フォーマットを導入すると、エラーが発生することがあります。

于 2013-04-17T14:53:29.657 に答える