Sql 在我的查询中修改什么来修复文字格式字符串错误?
文本与格式字符串不匹配Sql 在我的查询中修改什么来修复文字格式字符串错误?,sql,oracle,datetime-format,Sql,Oracle,Datetime Format,文本与格式字符串不匹配 select TO_DATE(TO_CHAR(A.DATE,'DD/MM/YYYY') || TO_CHAR(A.TIME),'DD/MM/YYYY HH24:MI:SS') from dual , TAB A 如何修改我的查询以避免产生上述错误 A.TIME类型为varchar2(20),A.DATE为DATE 我也有这种情况 Select TO_DATE(TO_CHAR(A.DATE,'DD/MM/YYYY') || TO_CHAR(A.TIME),'DD/MM/
select TO_DATE(TO_CHAR(A.DATE,'DD/MM/YYYY') || TO_CHAR(A.TIME),'DD/MM/YYYY HH24:MI:SS')
from dual , TAB A
如何修改我的查询以避免产生上述错误
A.TIME类型为varchar2(20),A.DATE为DATE
我也有这种情况
Select TO_DATE(TO_CHAR(A.DATE,'DD/MM/YYYY') || TO_CHAR(A.TIME),'DD/MM/YYYY HH24:MI:SS') < TO_DATE('20/04/2015','DD/MM/YYYY') +1
from dual , TAB A
选择TO_DATE(TO_CHAR(A.DATE,'DD/MM/yyyyy')| TO_CHAR(A.TIME),'DD/MM/yyyyyyyyh24:MI:SS')
它的生成错误如何修改它试试这个
select TO_DATE(TO_CHAR(A.DATE,'DD/MM/YYYY') || ' ' || A.TIME,'DD/MM/YYYY HH24:MI:SS')
from dual , TAB A
仅当A.TIME列中的数据格式为HH24:MI:SS时,此选项才有效。
在选择列表中处理布尔表达式时,应该使用case
Select
case when TO_DATE(TO_CHAR(A.DATE,'DD/MM/YYYY') ||
A.TIME,'DD/MM/YYYY HH24:MI:SS')
< (TO_DATE('20/04/2015','DD/MM/YYYY') +1)
then 'Y' else 'N' end
from dual , TAB A
选择
到日期时的大小写(到字符(A.DATE,'DD/MM/YYYY')||
A.时间,'DD/MM/yyyyy HH24:MI:SS')
<(截止日期('20/04/2015','DD/MM/YYYY')+1)
然后“你”或“我”结束
从双制表符A开始
A.TIME类型为varchar2(20),A.DATE为DATE
永远不要单独存储日期和时间元素。日期数据类型同时具有秒精度的日期和时间元素
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
14/05/2015 12:57:42
首先修复您的设计
作为一种可能的解决方法,您可以将日期文字附加到时间,然后将应用到\u date以将其转换为日期
比如说,
SQL> ALTER SESSION SET NLS_DATE_FORMAT='DD/MM/YYYY HH24:MI:SS';
Session altered.
SQL> WITH DATA AS(
2 SELECT SYSDATE dt, '13:05:10' tm FROM dual
3 )
4 SELECT TO_DATE(
5 TO_CHAR(dt,'DD/MM/YYYY')
6 || ' '||
7 tm,
8 'DD/MM/YYYY HH24:MI:SS') as "datetime"
9 FROM data;
datetime
-------------------
14/05/2015 13:05:10
修改后的查询如下所示:
SELECT TO_DATE(
TO_CHAR(t.date,'DD/MM/YYYY')
|| ' '||
t.time,
'DD/MM/YYYY HH24:MI:SS', 'NLS_DATE_LANGUAGE=ENGLISH') AS "datetime"
FROM your_table t;
您可能面临的问题是,如果时间列不符合格式
'HH24:MI:SS
,则无法使其工作。它完全取决于格式,因为您已将其存储为字符串。请在这些列中提供数据。没有它们,我们无法告诉您格式不匹配的原因。请提供一些数据示例。如果A.TIME列只包含时间,则将掩码更改为to_DATE(to_CHAR(A.DATE,'DD/MM/YYYY')| to_CHAR(A.TIME,'HH24:MI:SS'),'DD/MM/yyyyy HH24:MI:SS')。此外,如果你将A.DATE+A.TIME相加,你应该得到所需的结果日期,而不需要将字符转换为日期,反之亦然。日期数据类型在Oracle中表示为浮点数。小数点前的部分表示天数,小数点后的部分表示时间。@AlexPoole查询很长,我对日期有详细说明condition@JanisBaiza斯特凡·约达诺夫。。这些柱子的结构会好吗?@Moudiz如果这些柱子好的话,你说的结构是什么意思?这些列的类型是什么?我有以下条件2<截止日期('20/04/2015','DD/MM/YYYY')+1感谢您的帮助和信息Lalithank感谢您的帮助信息stefan,