[英]Not able to convert timestamp to char or date in oracle sql
我需要將時間戳值(19-01-21 09:15:00.000000 PM)轉換為日期格式('YYYY/MM/DD HH24:MI:SS')。 我正在嘗試使用 to_char function 來完成它(將其轉換為 varchar 並在 TO_DATE 函數中使用它)。 我在 to_char function 中遇到錯誤。 這是可行的方法還是請建議是否有更好的方法
select TO_CHAR('19-01-21 09:15:00.000000 PM','DD-MM-YY HH:MI:SSxFF AM') from dual;
select TO_DATE(TO_CHAR('19-01-21 09:15:00.000000 PM','DD-MM-YYYY HH:MI:SSxFF AM'),'YYYY/MM/DD HH24:MI:SS' ) from dual;
我收到以下錯誤:
ORA-01722: invalid number
01722. 00000 - "invalid number"
*Cause: The specified number was invalid.
*Action: Specify a valid number.
'19-01-21 09:15:00.000000 PM'
是字符串文字; 它不是DATE
或TIMESTAMP
數據類型。
由於您的字符串有小數秒,您可以使用TO_TIMESTAMP
將其轉換為TIMESTAMP
數據類型:
SELECT TO_TIMESTAMP( '19-01-21 09:15:00.000000 PM', 'DD-MM-RR HH12:MI:SS.FF6 AM' )
AS timestamp_value
FROM DUAL;
哪個輸出:
| TIMESTAMP_VALUE | |:---------------------------- | | 2021-01-19 21:15:00.000000000 |
如果您希望將該值作為DATE
數據類型,那么您可以采用之前的 output 並將其CAST
為DATE
:
SELECT CAST(
TO_TIMESTAMP( '19-01-21 09:15:00.000000 PM', 'DD-MM-RR HH12:MI:SS.FF6 AM' )
AS DATE
) AS date_value
FROM DUAL;
或者,如果小數秒總是為零:
SELECT TO_DATE( '19-01-21 09:15:00.000000 PM', 'DD-MM-RR HH12:MI:SS".000000" AM' )
AS date_value
FROM DUAL;
其中output:
| DATE_VALUE | |:----------------- | | 2021-01-19 21:15:00 |
db<> 在這里擺弄
我需要將時間戳值轉換為
date
/varchar
值。
如果要將值格式化為YYYY/MM/DD HH24:MI:SS
則可以使用TO_TIMESTAMP
然后TO_CHAR
:
SELECT TO_CHAR(
TO_TIMESTAMP( '19-01-21 09:15:00.000000 PM', 'DD-MM-RR HH12:MI:SS.FF6 AM' ),
'YYYY/MM/DD HH24:MI:SS'
) AS date_string
FROM DUAL;
哪個輸出:
| DATE_STRING | |:----------------- | | 2021/01/19 21:15:00 |
(注意:這會輸出字符串數據類型而不是DATE
數據類型;如果您想要DATE
數據類型,請使用第二個或第三個示例。)
db<> 在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.