Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.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
格式参数日期oracle_Oracle - Fatal编程技术网

格式参数日期oracle

格式参数日期oracle,oracle,Oracle,我正在尝试格式化一个日期,我将通过变量获取该日期 select to_char( $$exec_Date ,'dd-mm-yy hh24:mi:ss') date from dual ; 淡水河谷是 select to_char( 04-02-2015 17:19:52 ,'dd-mm-yy hh24:mi:ss') date from

我正在尝试格式化一个日期,我将通过变量获取该日期

select  to_char(
          $$exec_Date          ,'dd-mm-yy hh24:mi:ss') 
         date
          from dual ;
淡水河谷是

select  to_char(
          04-02-2015 17:19:52          ,'dd-mm-yy hh24:mi:ss') 
         date
          from dual ;
它很好用

select  to_char(
          sysdate          ,'dd-mm-yy hh24:mi:ss') 
         date
          from dual ;
有人能帮我一下我做错了什么吗?我已经调查过了

04-02-2015 17:19:52

Oracle不知道该值是日期还是字符串,或者是什么?您必须首先使用将文字转换为日期

但是,在您的例子中,您传递的值没有单引号,这意味着它不是文本。因此,您需要这样做:

select to_char( to_date('04-02-2015 17:19:52','dd-mm-yyyy hh24:mi:ss') ,'dd-mm-yy hh24:mi:ss') date from dual ; 选择以添加字符( 截止日期('04-02-2015 17:19:52','dd-mm-yyyy hh24:mi:ss'),'dd-mm-yy hh24:mi:ss') 日期 来自双重; 注意单引号和to_date函数

使用TO_DATE将文字转换为日期,使用TO_CHAR将日期转换为文字。格式模型是最需要的


对于所有类型的计算,让日期保持原样。不需要将其转换为字符串。但是,如果您有一个字符串,则需要首先将其转换为日期以进行日期计算。当您希望以所需格式显示日期时间时,请使用来\u CHAR

您到底想对该日期做什么

如果您只是为了显示而使用它,那么您不需要做任何事情,因为它已经是一个字符串(除非您可能需要更改显示日期的格式?)

如果需要将其转换为日期,以便将其存储在日期列中,或用于日期比较,则需要使用
到日期
,而不是
到字符

简言之:

  • 如果您正在传递一个字符串(这就是您正在做的),并且希望将其转换为Oracle中的日期,请使用
    to\u DATE
  • 如果要以特定格式显示日期数据类型,请使用
    来显示字符
因此,您的
to_char(sysdate,'dd-mm-yy-hh24:mi:ss')
工作-它将sysdate(日期数据类型)转换为该格式的字符串

在您的示例中,您需要执行到日期($$exec\u date,'dd-mm-yyyy-hh24:mi:ss')


如果你需要重新格式化,以2位数的年份来显示它(说真的?我知道y2k是15年前的事了,但还是…!),那么你需要在它周围放一个
to_char()
和相关的格式。

看起来像一个字符串,而不是一个日期。代码嵌入在哪里?具体是什么语言,数据类型又是什么?如果它是一个字符串,那么您要做什么转换?您似乎只是在删除世纪号,从4位数字变为2位数字的年份?变量由DI工具给出,但采用datetime数据类型。因此,您在哪里看到“解析值”,它似乎已被格式化为字符串?编辑您的问题以提供一些上下文可能会有所帮助。如果您希望以所需格式显示日期时间,请使用to_CHAR。对于所有类型的计算,让日期保持原样。不需要将其转换为字符串。看看我的答案。