Sql ORA-01858错误消息
我有一个关于日期格式错误的问题。所以我有这个疑问Sql ORA-01858错误消息,sql,oracle,date,format,Sql,Oracle,Date,Format,我有一个关于日期格式错误的问题。所以我有这个疑问 SELECT TO_DATE (PS.PROJECT_START_DT, 'MM/DD/YYYY') 给了我ORA-01858:在需要数字的地方发现了一个非数字字符 我的桌子结构是这样的 PROJECT_START_DT PROJECT_END_DT JOB_NAME 2/5/2015 4/2/2015 W-IGG 2/18/2015 3/19/2015 W14056 2/5/2015
SELECT TO_DATE (PS.PROJECT_START_DT, 'MM/DD/YYYY')
给了我ORA-01858:在需要数字的地方发现了一个非数字字符
我的桌子结构是这样的
PROJECT_START_DT PROJECT_END_DT JOB_NAME
2/5/2015 4/2/2015 W-IGG
2/18/2015 3/19/2015 W14056
2/5/2015 3/31/2015 W14013
请帮我解决日期格式的问题
选择日期PS.PROJECT开始日期“MM/DD/YYYY”
在日期列上使用日期是没有意义的。您需要使用适当的格式模型以所需的格式显示字符
日期数据类型包含日期和时间元素
SQL> SELECT to_char(SYSDATE, 'mm/dd/yyyy hh24:mi:ss') dt_tm FROM dual;
DT_TM
-------------------
02/06/2015 11:28:32
SQL>
如果要在任何日期操作中使用日期值,则根本不需要将其转换为任何内容,只需直接在日期操作中使用日期值即可
更新OP关于此处查询的请求
在该查询中,您不必在子查询中使用to_CHAR。仅在主选择中使用TO_CHAR,因为这将显示值。子查询中的start_date和end_dt是外部查询的输入,应该保留为日期值,不需要将其转换为字符串
项目开始是一个日期吗?还是一辆瓦查尔?如果这是一个日期,顾名思义,你为什么要打电话去约会?您只是想截断时间部分吗?是的,它是一个日期…我的目的只是通过select语句显示日期,我将进一步使用它来处理一些数据您想选择一个日期吗?还是要选择特定格式的varchar2?如果你想选择一个日期,只需选择一个日期。如果项目开始,申请日期是完全无用的。至于to_date需要一个VARCHAR参数Oracle将首先使用NLS设置定义的默认格式将您的日期转换为VARCHAR,然后to_date将该VARCHAR转换回最初的日期。lalit如果我使用to_CHAR,则该查询中的此查询片段中会出现问题,无需在子查询中使用to_CHAR,只需在主选择中选择start_date、end_dt和use to_CHAR。让我更新我的答案。
SQL> SELECT to_char(SYSDATE, 'mm/dd/yyyy hh24:mi:ss') dt_tm FROM dual;
DT_TM
-------------------
02/06/2015 11:28:32
SQL>
SELECT LEVEL WEEK_NUM_INCR,
TO_CHAR (start_date + (LEVEL - 1) * 7, 'WW') WEEK_POSITION
/* WEEK POSITION FOR THE WHOLE YEAR */
,
TO_CHAR (start_date + (LEVEL - 1) * 7, 'MM/DD/YYYY') START_WEEK_DATE,
TO_CHAR (start_date + (LEVEL) * 7, 'MM/DD/YYYY') END_WEEK_DATE
FROM
(SELECT PS.PROJECT_START_DT start_date,
PS.PROJECT_END_DT end_date
FROM PROJECT_SPAN PS
WHERE PS.JOB_NAME = 'W-IGG'
)
CONNECT BY start_date + (LEVEL - 1) * 7 < end_date;