私は従うように、テーブル名mytable
を持っている...文字列をタイムスタンプにキャストし、レコード..を選択する方法
ID LOCATION TIMERECORDED
45744 20 2017-04-21 19:00:00.000
45788 55 2017-04-21 19:15:00.000
45832 55 2017-04-21 19:30:00.000
ここTIMERECORDED
列のデータ型はvarchar型
である私は、クエリ
select *
from mytable t
where t.location_id = ? and
t.time_recorded >= CURRENT_TIMESTAMP - NUMTODSINTERVAL(25,'MINUTE') and
ROWNUM <= 1
order by t.time_recorded DESC
下に書かれている 25 minites内に挿入された先頭レコードを取得したいです
したがってTIMERECORDED
の列データはvarchar
のデータ型ですTimestamp
とtにキャストできます鶏は結果を得る..?
更新:
最近DBAはMSSQL DB to ORACLE
DBを移行し、残念ながら、上記の表に(MYTABLE)カラム(TIMERECORDED)はデータ型nvarchar
を有していました。テーブルとして
は解決策がどうあるべきか多くのレコードを持っている
タイムスタンプに文字列を変換データをソートする方法はあり新しいテーブル(mytableは)を作成し、それ
にデータを挿入そして 次に を取得しますか?
ヒント: 'to_timestamp' – Aleksej
ヒントとして、[リンク](https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions193.htm)が見つからない場合があります – xQbert
文字列をタイムスタンプTO_TIMESTAMP関数を使用します(適切な書式モデルを使用して、列の書式と一致させます)。形式は実際にNVARCHAR2ではなくNVARCHARですか?その場合、TO_TIMESTAMPはNVARCHAR引数を受け入れることも、受け付けないこともあるため、最初にNVARCHAR2にキャストする必要があります。それではできるだけ早くデータタイプを間違いなく修正する必要があります。新しい表を作成してその表にデータを挿入するか、既存の表にTIMESTAMPデータ型の新しい列を作成し、それを移入してからNVARCHAR列を削除し、新しい列の名前を古い列の名前に変更できます。 – mathguy