oracle date类型字段直接to_char年月日 显示00000000 加个trunc再to_Char显示就正常了 这是为什么

oracle date类型字段直接to_char 年月日后 显示00000000 加个trunc再to_Char显示就正常了 这是为什么


select to_char(sysdate,'yyyy-MM-dd HH24:mi:ss') from dual;

请把你的数据及代码贴出来,不知道你所说的正常是个什么意思

  1. to_char函数,第一个参数为date类型时,第二个参数需要指定输出格式,比如
    to_char(date字段,'yyyy-mm-dd'),
    to_char(date字段,'yyyy-mm-dd hh24:mi:ss'),
    to_char(date字段,'yyyymmddhh24miss')
    
    第一个会输出 "年-月-日",第二个会输出 "年-月-日 时:分:秒",第三个会输出 "年月日时分秒",
    也就是说,你想输出什么格式完全可以自行定义。
  2. trunc函数,如果不加第二个参数,就是只取整数位,oracle的一天其实就是1,因此trunc(date字段)就是舍去时分秒,只保留年月日的信息。
  3. 在oracle中,date类型包含的有 年、月、日、时、分、秒 6个信息,当时分秒都为0时,在部分客户端工具会只显示 年、月、日这3个信息;
    反过来说,日期'2022-04-04'其实就是表示的'2022-04-04 00:00:00'这一时刻