UPDATE T3001T3005 SET  REMARK='dd', SIGN_TIME = TO_DATE('2008-09-05 13:11','yyyy-mm-dd HH24:mi'), PREPARE_CONTENT = 'XXX' WHERE (flight_date = TO_DATE('2008-09-07','yyyy-mm-dd')) and ( FLIGHT_VOYAGE = 'XXX')  and (CREW_LINK_LINE = '12')  [code][code=Java]SELECT TO_CHAR(A.FLIGHT_DATE,'yyyy-mm-dd'),    A.FLIGHT_VOYAGE,    f_get_persons_name(A.FLIGHT_DATE,A.CREW_LINK_LINE,'F') crews,    f_get_persons_name(A.FLIGHT_DATE,A.CREW_LINK_LINE,'C') STEWS,    f_get_persons_name(A.FLIGHT_DATE,A.CREW_LINK_LINE,'A001') SAFE,    A.REMARK,    A.PREPARE_CONTENT,    A.CREW_LINK_LINE,    TO_CHAR(A.SIGN_TIME,'yyyy-mm-dd HH:mm')  FROM T3001 A,T3005 B  WHERE ( to_char(A.FLIGHT_DATE,'yyyy-mm-dd') >='2008-09-05' )   AND ( to_char(A.FLIGHT_DATE,'yyyy-mm-dd') <='2008-09-11')   AND ( A.CREW_LINK_LINE=B.CREW_LINK_LINE)   AND ( A.FLIGHT_DATE = B.FLIGHT_DATE )   AND ( A.CREW_LINK_LINE IN   (SELECT B.CREW_LINK_LINE FROM T3005 B ,T3017 C   WHERE to_char(B.FLIGHT_DATE,'yyyy-mm-dd') >='2008-09-05' AND to_char(B.FLIGHT_DATE,'yyyy-mm-dd') <='2008-09-11'   AND  B.P_CODE = C.P_CODE))  AND (B.P_CODE = 'F0000003')  ORDER BY A.FLIGHT_DATE
我先更新了T3001的REMARK、SIGN_TIME、PREPARE_CONTENT的3个字段,然后两个表联合查询出这3个字段,但SIGN_TIME这个字段的数据查询出来不是更新后的数据,REMARK和PREPARE_CONTENT这两个查询出来是对的,是更新后的数据
请教下高手,帮忙看下!

解决方案 »

  1.   

    SELECT TO_CHAR(A.FLIGHT_DATE,'yyyy-mm-dd'),    A.FLIGHT_VOYAGE,    f_get_persons_name(A.FLIGHT_DATE,A.CREW_LINK_LINE,'F') crews,    f_get_persons_name(A.FLIGHT_DATE,A.CREW_LINK_LINE,'C') STEWS,    f_get_persons_name(A.FLIGHT_DATE,A.CREW_LINK_LINE,'A001') SAFE,    A.REMARK,    A.PREPARE_CONTENT,    A.CREW_LINK_LINE,    TO_CHAR(A.SIGN_TIME,'yyyy-mm-dd HH:mm')  FROM T3001 A,T3005 B  WHERE ( to_char(A.FLIGHT_DATE,'yyyy-mm-dd') >='2008-09-05' )   AND ( to_char(A.FLIGHT_DATE,'yyyy-mm-dd') <='2008-09-11')   AND ( A.CREW_LINK_LINE=B.CREW_LINK_LINE)   AND ( A.FLIGHT_DATE = B.FLIGHT_DATE )   AND ( A.CREW_LINK_LINE IN   (SELECT B.CREW_LINK_LINE FROM T3005 B ,T3017 C   WHERE to_char(B.FLIGHT_DATE,'yyyy-mm-dd') >='2008-09-05' AND to_char(B.FLIGHT_DATE,'yyyy-mm-dd') <='2008-09-11'   AND  B.P_CODE = C.P_CODE))  AND (B.P_CODE = 'F0000003')  ORDER BY A.FLIGHT_DATE这是查询的SQL
      

  2.   


    SELECT TO_CHAR(A.FLIGHT_DATE,'yyyy-mm-dd'),    A.FLIGHT_VOYAGE,    
    f_get_persons_name(A.FLIGHT_DATE,A.CREW_LINK_LINE,'F') crews,    
    f_get_persons_name(A.FLIGHT_DATE,A.CREW_LINK_LINE,'C') STEWS,    
    f_get_persons_name(A.FLIGHT_DATE,A.CREW_LINK_LINE,'A001') SAFE,    
    A.REMARK,    
    A.PREPARE_CONTENT,    A.CREW_LINK_LINE,    
    TO_CHAR(A.SIGN_TIME,'yyyy-mm-dd HH:mm') --这个地方改为 'yyyy-mm-dd HH:mi'
    FROM T3001 A,T3005 B  WHERE ( to_char(A.FLIGHT_DATE,'yyyy-mm-dd') >='2008-09-05' )   
    AND ( to_char(A.FLIGHT_DATE,'yyyy-mm-dd') <='2008-09-11')   
    AND ( A.CREW_LINK_LINE=B.CREW_LINK_LINE)   
    AND ( A.FLIGHT_DATE = B.FLIGHT_DATE )   
    AND ( A.CREW_LINK_LINE IN   (
      SELECT B.CREW_LINK_LINE FROM T3005 B ,T3017 C   
      WHERE to_char(B.FLIGHT_DATE,'yyyy-mm-dd') >='2008-09-05' 
      AND to_char(B.FLIGHT_DATE,'yyyy-mm-dd') <='2008-09-11'   
      AND  B.P_CODE = C.P_CODE))  AND (B.P_CODE = 'F0000003'
     )  ORDER BY A.FLIGHT_DATE
      

  3.   

    HH:mm取得是小时:月份
    HH:mi才是小时:分钟
      

  4.   

    可能1.  你update的是T3001T3005 表,而select的T3001.SIGN_TIME 
    可能2.  你update的SIGN_TIME使用的是'yyyy-mm-dd HH24:mi'格式,而select使用的是'yyyy-mm-dd HH:mm'格式,当然不一样了。
      

  5.   

    谢谢楼上两位大哥,问题解决了,是这里的格式'yyyy-mm-dd HH24:mi'