打印本文打印本文 关闭窗口关闭窗口

[求助]每月1号的日期如20130701为什么变成了20130700?

作者:通达信 来源:cxh99.com 发布时间:2013年08月28日
  • 咨询内容: 每月1号的日期如20130701、20130801等为什么变成了0号?
    具体是这样的:
    AAA:20130701;
    显示是“20130700.00”。以至于
    BBB:DATETODAY(AAA-19000000);
    无输出。
    为什么会这样?请老师解答。

     

  • 通达信技术部:

    你要达到什么目的 ?

     

    DATE+19000000;
    DATE;

     
    此主题相关图片如下062803.jpg:

    这样对比他们之间的 大小不是一个数量级的 所以那个1的差距 在计算的时候可能是0.01的差别   你要显示正确日期可以换种方式处理

     

     

    {月日:MOD(DATE,10000);
    年份:INTPART(DATE/10000)+1900;

    }

     

  • 通达信客服:

    月日:MOD(DATE,10000);
    年份:INTPART(DATE/10000)+1900;
    DATE;
    DATE+19000000;
    DATE*100+19000000;
    DATE*100+19000000-19000000;

     

     

     


    此主题相关图片如下062804.jpg:

     

    用你这个方法 那一天都可能出问题   那个不足1的 到哪一天 哪天就不正常   你也没法儿找规律的

     


     

     

  • 网友交流: queenkeshi 老师您好!
    我的问题是,为什么20130201变成了20130200、20130301变成了20130300,等等。
    同样的问题还有:
    {问题}
    如20130801=:20130801;
    又20130801+1=:20130801+1;
    又20130801+2=:20130801+2;
    又20130802=:20130802;
    又20130802+1=:20130802+1;
    又20130802+2=:20130802+2;

    我的目的是,设定一个目标日期用于效验项目。

     

  • 网友交流:

    数值内部处理时使用的是浮点数,数值只能精确到数据的大约千万分之一,

     

    对于20130701来说,结果可能会在(+/-)1范围内.

     

     

    而1130701的较小些数的误差可以采用一定方法抹去.

    用到8位数的计算的都会有这个问题。。。。具体说下你要实现什么 看看如何弄

打印本文打印本文 关闭窗口关闭窗口