web-dev-qa-db-ja.com

Oracle SQLでタイムスタンプを日付に変換します

タイムスタンプを日付に変換するにはどうすればよいですか?

テーブルには、timestamp形式のstart_tsフィールドがあります。

'05/13/2016 4:58:11.123456 PM'

テーブルを照会して、テーブル内の最大値と最小値timestampを見つける必要がありますが、できません。

Select max(start_ts) 
from db 
where cast(start_ts as date) = '13-may-2016'

ただし、クエリは値を返しません。

日付の最大タイムスタンプを見つけるのを手伝ってください。

14
Dinu
CAST(timestamp_expression AS DATE)

たとえば、クエリは次のとおりです。SELECT CAST(SYSTIMESTAMP AS DATE) FROM dual;

23
Peter Nosko

代わりにTRUNCTO_DATEを使用してみてください

WHERE
    TRUNC(start_ts) = TO_DATE('2016-05-13', 'YYYY-MM-DD')

または、代わりに>=および<を使用して、start_ts列で関数を使用しないようにすることができます。

WHERE
   start_ts >= TO_DATE('2016-05-13', 'YYYY-MM-DD')
   AND start_ts < TO_DATE('2016-05-14', 'YYYY-MM-DD')
7
Felix Pamittan

選択中にこのフォーマットを使用します

to_char(systimestamp,'DD-MON-YYYY')

例えば:

デュアルからto_char(systimestamp、 'DD-MON-YYYY')を選択します。

5
theDbGuy

データ型がタイムスタンプの場合、表示形式は無関係です。

データを日付に変換したり、to_charを使用したりしないでください。代わりに、TO_TIMESTAMP()を使用してタイムスタンプデータをタイムスタンプ値と比較します

WHERE start_ts >= TO_TIMESTAMP('2016-05-13', 'YYYY-MM-DD')
   AND start_ts < TO_TIMESTAMP('2016-05-14', 'YYYY-MM-DD')
4
Used_By_Already

次を使用できます:テーブルからselect to_date(to_char(date_field、 'dd/mm/yyyy')).

0