Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 甲骨文选择制作月份_String_Oracle_Date_Select - Fatal编程技术网

String 甲骨文选择制作月份

String 甲骨文选择制作月份,string,oracle,date,select,String,Oracle,Date,Select,我有以下选择,以获取包含时间戳的文件名,并将其转换为日期/时间字段的正确格式,但当我使用to_字符(to_Date…)时,它会导致我的第一个子字符串和第三个子字符串重复。当我不使用to_字符(to_Date…)时,它不会重复 SELECT SUBSTR(COMPARE_FILENAME, INSTR(FILENAME, 'e', 1) + 7, 2) ||'-'|| TO_CHAR(TO_DATE(SUBSTR(FILENAME, INSTR(FILENAME, 'e', 1) + 5

我有以下选择,以获取包含时间戳的文件名,并将其转换为日期/时间字段的正确格式,但当我使用to_字符(to_Date…)时,它会导致我的第一个子字符串和第三个子字符串重复。当我不使用to_字符(to_Date…)时,它不会重复

    SELECT 
SUBSTR(COMPARE_FILENAME, INSTR(FILENAME, 'e', 1) + 7, 2) ||'-'||
TO_CHAR(TO_DATE(SUBSTR(FILENAME, INSTR(FILENAME, 'e', 1) + 5, 2), 'MM')) ||'-'||
SUBSTR(FILENAME, INSTR(FILENAME, 'e', 1) + 1, 2) ||' '||
SUBSTR(FILENAME, INSTR(FILENAME, 'e', 1) + 9, 2) ||'.'||
SUBSTR(FILENAME, INSTR(FILENAME, 'e', 1) + 11, 2) ||'.'||
SUBSTR(FILENAME, INSTR(FILENAME, 'e', 1) + 13, 2) AS TIME
FROM TABLE1 WHERE ID = 1662;
我从中选择的列有以下内容:name200601225511.txt

它返回这个:01-01-JUN-20-20 22.55.11

获取包含时间戳的文件名,并将其转换为日期/时间字段的正确格式

不需要这种复杂的字符串解析逻辑。您可以使用双引号定义包含文字部分的格式说明符

这将正确地将字符串解析为
date
s:

to_date(filename, '"Name"YYYYMMDDHH24MISS".txt"') 

alter session set nls_date_format = 'yyyy-mm-dd hh24:mi:ss';
select to_date('Name20200601225511.txt', '"Name"YYYYMMDDHH24MISS".txt"') filedate from dual
|文件日期| | :------------------ | | 2020-06-01 22:55:11 |
谢谢!这正是我所希望的!如果它对你有效,那么你必须接受答案,这样你的问题就会被标记为已解决。 | FILEDATE | | :------------------ | | 2020-06-01 22:55:11 |