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
Sql Oracle日期比较查询不支持';我不能按预期执行_Sql_Oracle - Fatal编程技术网

Sql Oracle日期比较查询不支持';我不能按预期执行

Sql Oracle日期比较查询不支持';我不能按预期执行,sql,oracle,Sql,Oracle,我的查询中有以下条件: AND support_version_valid_from_dt >= to_date(to_char( support_version_valid_from_dt, 'yyyy/mm/dd HH:MI:SS')) 我得到了错误:[error]Execution(18:17):ORA-01861:literal与格式字符串不匹配 所以我试过这个。但这不起作用。我不明白甲骨文的日期。特别是比较日期。有人能帮我理解oracle中查询日期比较的关键问题吗 se

我的查询中有以下条件:

AND support_version_valid_from_dt >= to_date(to_char(
    support_version_valid_from_dt, 'yyyy/mm/dd HH:MI:SS'))
我得到了错误:[error]Execution(18:17):ORA-01861:literal与格式字符串不匹配 所以我试过这个。但这不起作用。我不明白甲骨文的日期。特别是比较日期。有人能帮我理解oracle中查询日期比较的关键问题吗

select  to_date(to_char(sysdate, 'yyyy/mm/dd HH:MI:SS'))
 from dual

TO_DATE
TO_CHAR
相反。因此,如果您至少输入一个
日期
,那么这应该是可行的:

to_date(to_char(input_date, 'yyyy/mm/dd HH:MI:SS'), 'yyyy/mm/dd HH:MI:SS')
这将把
日期
转换为
字符
并返回


即使它可以工作,也不完全清楚您为什么要这样做:)

您应该将日期与日期进行比较,而不是将日期存储或比较为字符串

执行此操作时:

to_date(to_char(sysdate, 'yyyy/mm/dd HH:MI:SS'))
。。。您正在使用显式格式模型将
日期
数据类型转换为字符串,然后将该字符串转换回没有显式格式模型的
日期
;因此,它隐式地使用您的会话NLS设置。你实际上在做:

to_date(to_char(sysdate, 'yyyy/mm/dd HH:MI:SS'), '<NLS_DATE_FORMAT>')
。。。将列值(左侧)保留为日期:

AND support_version_valid_from_dt >=
    to_date('2014/02/11 05:44:31', 'YYYY/MM/DD HH24:MI:SS')

您必须包含整个格式模型;您已经指定了实际日期部分,您不能只选择一些模型(本例中的时间)。我还将
HH
更改为
HH24
;如果没有这一点,你就无法在中午之后输入时间,因为你没有AM/PM指示器。

为什么你要使用
to_char()
日期转换为字符串,然后使用
to_date()
返回到
日期?这没有道理。你基本上是在写
where support\u version\u valid\u from\u dt>support\u version\u valid\u from\u dt
,这永远不会是真的。列的类型是什么?你想做什么?很难从非工作代码中看出您的意图。将会有一个字符变量,我必须将其与实际日期列进行比较。请看:
其中SUPPORT.STORE_SELECTOR='R'和SUPPORTER.STORE_SELECTOR='R'和to_char(SUPPORT_version_valid_from_dt,'yyyyy/mm/dd HH:MI:SS')>=to_date('2014/02/11 05:44:31','HH:MI:SS')
因为输入日期实际上是一个即将输入的字符。我正在比较日期如果它是一个
char
,你为什么要调用
来查看它?
AND support_version_valid_from_dt >=
    to_date('2014/02/11 05:44:31', 'YYYY/MM/DD HH24:MI:SS')