我正在尝试将值转换为普通日期格式。但是我收到错误ORA-01841 :(完整)年份必须介于-4713和+9999之间,而不是0。我已经在本网站上研究了类似问题的答案,但这并没有解决我的问题。
-- How the data looks like
select REPLACE(REGEXP_SUBSTR(data_detail, '([^|]*)([$|]|$)', 1, 5), '|', '') from land.LAND_DATA;
输出
2017-11-16T04:45:05.000Z
2017-11-16T04:46:04.000Z
当我尝试将上述输出转换为适当的日期格式时,我收到错误。我在这做什么错误
select
TO_DATE(
TO_CHAR(
TO_TIMESTAMP(
REPLACE(REGEXP_SUBSTR(data_detail, '([^|]*)([$|]|$)', 1, 5), '|', ''),
'YYYY-MM-DD"T"HH24:MI:SS.ff3"Z"'),'MM/DD/YYYY HH24:MI:SS'),
'MM/DD/YYYY HH24:MI:SS')
from land.LAND_DATA;
答案 0 :(得分:0)
这些结果是TO_TIMESTAMP function的输入数据:
public class LinkedList {
public static ArrayList<String> nodes;
public LinkedList() {
ArrayList<String> nodes = new ArrayList<String>();
System.out.print(nodes);
}
public ArrayList<String> add(String value) {
nodes.add(value);
return nodes;
}
public static void main(String [] args) throws IOException
{
LinkedList list = new LinkedList();
list.add("B");
}
}
首先是一年,然后是一个月和一天,然后是一个时间,最后有一个毫秒(在逗号之后)。
这是代码中的代码段:
2017-11-16T04:45:05.000Z
2017-11-16T04:46:04.000Z
第二个参数是a date format model,这些字母具有以下含义(按顺序):
TO_TIMESTAMP( ....... , 'MM/DD/YYYY HH24:MI:SS' )
- 月(01-12; 1月= 01)。MM
- 分隔符/
- 月份日期(1-31)DD
- 分隔符/
- 4位数年份; S前缀BC的日期带有减号。YYYY
- 分隔符(空格)
- 一天中的小时(0-23)。HH24
- 分隔符:
- 分钟(0-59)。MI
- 分隔符:
- 秒(0-59)。上述格式模型与输入数据的格式不匹配,因为这个格式的月份是第一个,但是您的数据以一年开始!!!
使用以下格式:
SS
您可以使用如下的简单查询来测试格式是否正常或出错:
'yyyy-mm-dd"T"hh24:mi:ss.ff"Z"'