首页 > 其他分享 >pg结果子查询转换数据不正确

pg结果子查询转换数据不正确

时间:2024-09-29 18:22:28浏览次数:16  
标签:completion 00 转换 rq 查询 cast pg date varchar

1、问题

同样的sql,执行思路,在测试环境,可以正常获取结果,生产环境数据就是不对,怀疑是PG版本不同。

sql如下:

xx的意思:查询completion_date,6天后的日期(跳过节假日),结果数据都没有转换

  SELECT distinct
      A.input_user,
      A.acqtn_mode,
      A.assemble_id AS zhy_zydx,
      A.completion_date,
      ((
              select
                cast(rq as varchar)
              from
                dquality_ycbf.zl_weekday
              where
                rq >= to_date (cast(A.completion_date as varchar), 'yyyy-MM-dd')
                and sfjjr = 'N'
              order by
                rq asc
              offset
                6
              limit
                1
            ) ||  SUBSTRING( cast(cast(A.completion_date as varchar) as varchar),11,10)
          ) as xx
    FROM
      std_data.xx_item A
    where
      (
        (
          A.Input_Time >= '2024-07-01 00:00:00'
          and A.Input_Time <= '2024-09-30 23:59:59'
        )
        or (
          A.Update_Date >= '2024-07-01 00:00:00'
          and A.Update_Date <= '2024-09-30 23:59:59'
        )
      )
      and A.dataset_class in ('A0100000000002', 'a0100000000002')
      and A.test_item_id = A.test_item_id

1.1生产环境

正常来讲xx,数据要么是null, 要么比completion_date至少大6天,莫名奇妙出来哦2023-03-27不能理解。

执行计划

生产环境,执行计划,看用到了HashAggregate ,不知道是不是它的影响。搞不懂,先放着,希望以后能明白原因

1、2测试环境

测试环境转的也很正常。 

方案修改

研究半天搞不懂,生产环境为什么不行。于是决定修改方案。 先找到zl_weekday表rq,对应跳过N天之后的实际日期,然后比较

  SELECT 
      A.input_user,
      A.acqtn_mode,
      A.assemble_id AS zhy_zydx,
      A.completion_date,
       (  (
              select
                cast(real_rq as varchar)
              from
               (    select rq,(select d1.rq  from dquality_ycbf.zl_weekday d1  
      where d1.rq>=zw.rq       
      and d1.sfjjr = 'N'
              order by
               d1.rq asc
              offset
                6
              limit
                1)as real_rq
      from dquality_ycbf.zl_weekday zw) xx
              where
                xx.rq = to_date (cast(A.completion_date as varchar), 'yyyy-MM-dd')
             
            )  || SUBSTRING( cast(cast(A.completion_date as varchar) as varchar),11,10)
          ) as xx
    FROM
      std_data.com_analysis_item A
       where
      (
        (
          A.Input_Time >= '2024-07-01 00:00:00'
          and A.Input_Time <= '2024-09-30 23:59:59'
        )
        or (
          A.Update_Date >= '2024-07-01 00:00:00'
          and A.Update_Date <= '2024-09-30 23:59:59'
        )
      )
      and A.dataset_class in ('A0100000000002', 'a0100000000002')

这个方案,生产环境和测试环境都可以正确查到数据

标签:completion,00,转换,rq,查询,cast,pg,date,varchar
From: https://blog.csdn.net/s07aser123/article/details/142637598

相关文章

  • 视频格式转换 CoolUtils Total Movie Converter v4.1 中文授权版
    CoolUtilsTotalMovieConverter 是一款适用于PC端的视频格式转换软件,支持转换几乎所有常见的视频格式。无论你需要将视频转换为AVI、FLV、MPG、WMV、MPEG等格式,还是想将视频优化用于XBox、iPhone、iPad等设备,这款工具都能帮你实现。新版添加了“VideoToDevice”功能,确......
  • 音频格式转换软件 Coolutils Total Audio Converter 序列号
    CoolutilsTotalAudioConverter,音频转换器,可以将音频文件转换为WAV,MP3,OGG,WMA,APE,FLAC,MP4,AAC,MPC等音频格式。支持将CD转换无损格式,CUE分割APE和FLAC文件、自动化批量转换。该版本已内置序列号,可以使用全部功能。软件截图:使用说明:1、将压缩文件解压到固定......
  • Java如何将Object转换成指定Class对象
    在Java中,将Object转换为指定类型的Class对象实际上是两个不同概念的操作:将Object实例转换为特定类型的实例:这通常涉及到类型转换(如(MyType)myObject)或者通过反射机制(Class.cast(Object))来进行。获取特定类型的Class对象:这可以通过.class语法或Class.forName(StringclassName)......
  • [米联客-XILINX-H3_CZ08_7100] FPGA_SDK入门篇连载-08PS 私有看门狗定时器实验
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA实验平台:米联客-MLK-H3-CZ08-7100开发板板卡获取平台:https://milianke.tmall.com/登录“米联客”FPGA社区http://www.uisrc.com视频课程、答疑解惑!目录1概述2系统框图3中断资......