请问fr的日期跟excel的日期是不是相差1?

刚才有个问题折腾了很久,一直以为是自己的问题,中间突然发现,43626在excel中是2019-06-10,但是在FR里是2019-06-09

image.png



补充,刚才看文档看到这个.

image.pngMSEXCEL应该是把1900-1-1当成1,所以FR应该是跟MSEXCEL相差1的

FineReport lanfengye 发布于 2019-6-9 18:38 (编辑于 2019-6-10 09:55)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
孤陌Lv6资深互助
发布于2019-6-9 21:01

这个其实是你用错公式了 TODATE公式返回的是毫秒 

 参数是以从1970年1月1日0时0分0秒开始的毫秒数,返回对应的时间。
示例:
TODATE(1023542354746)返回2002年6月8日。



  • lanfengye lanfengye(提问者) todate返回的值跟dayvalue返回的值不一样是吗?我是从dayvalue返回值得到43626的.然后想用format把43626直接转日期发现不行所以多套了一个todate..
    2019-06-10 09:24 
  • 孤陌 孤陌 回复 lanfengye(提问者) 你什么数据都返回的都是当天的日期明白吗??你这个值是无法返回准确的日期值的
    2019-06-10 21:18 
  • 孤陌 孤陌 回复 lanfengye(提问者) 是无法用todate公式根据天数进行日期转换的,思路就是错的
    2019-06-10 21:35 
最佳回答
0
zsh331Lv8专家互助
发布于2019-6-9 20:20

小伙子,你会发现下面的三个值都是返回“20190609


FORMAT(TODATE("43626","yyyyMMdd"),"yyyyMMdd")   -- 20190609
FORMAT(TODATE("436216","yyyyMMdd"),"yyyyMMdd")  -- 20190609
FORMAT(TODATE("436326","yyyyMMdd"),"yyyyMMdd")  -- 20190609


仔细看下帆软todate()函数的解释:不要和excel数字换日期函数混淆运用!!!

TODATE()函数可以将各种日期形式的参数转换为日期类型。
它有三种参数的形式:
1 参数是一个日期型的参数,那么直接将这个参数返回。
示例:
TODATE(DATE(2007,12,12))返回2007年12月12日组成的日期。
2 参数是以从1970年1月1日0时0分0秒开始的毫秒数,返回对应的时间。
示例:
TODATE(1023542354746)返回2002年6月8日。
3 参数是日期格式的文本,那么返回这个文本对应的日期。
示例:
TODATE("2007/10/15")返回2007年10月5日组成的日期。
TODATE("2007-6-8")返回2007年6月8日组成的日期。
4 有两个参数,第一个参数是一个日期格式的文本,第二个参数是用来解析日期的格式。
示例:
TODATE("1/15/07","mm/dd/yy")返回07年1月15日组成的日期。
特别的,"yyyyMMdd"是用来解析形如“20081230”之类的日期格式的。比如TODATE("20110830","yyyyMMdd")返回11年08月30日组成的日期
5 有三个参数,第一个参数是一个日期格式的文本,第二个参数是用来解析日期的格式,第三个参数为解析日期的语言,如:zh(中文),en(英文)。
示例:
TODATE("星期三 1/15/07","EEE mm/dd/yy", "zh")返回07年1月15日组成的日期,使用“zh(中文)”才能够正常解析“星期三”这个字符串。


  • lanfengye lanfengye(提问者) 我从dayvalue得到43626的,然后我把43626放到excel里是19-06-10这个日期,在fr里是19-06-09这个日期,现在我的问题是,导入的excel文件里的日期列在做过滤的时候总是跟预期不对,是不是应该在这个基础上-1?
    2019-06-10 09:39 
  • lanfengye lanfengye(提问者) 想直接把43626转成一个日期是不是用format就可以呢?
    2019-06-10 09:39 
  • zsh331 zsh331 回复 lanfengye(提问者) 据我所知,通过dayvalue()函数得到的值无法逆运算成日期型!
    2019-06-10 09:54 
  • lanfengye lanfengye(提问者) 回复 zsh331 哦.我的天...那么导入的excel文件原本的日期列是可以不用处理就直接在fr里进行过滤比较?我来试试
    2019-06-10 10:00 
  • zsh331 zsh331 回复 lanfengye(提问者) excel中的日期列你用“标准的年月日格式”导入不就行了!
    2019-06-10 10:01 
最佳回答
0
张洪威Lv6高级互助
发布于2019-6-10 10:07

你根据excel的时间值43626来转换成日期,你可以用dateadd这种语句,不用todate这种嵌套两次。

在默认初始值的日期1900-1-1 的上面直接加43626天,就能得到你想要的日期。


帆软公式里面没有dateadd,它自带的datedelta('1900-1-1', 43626) 有这个功能,返回的结果是2019-06-12,默认日期可能与excel的有出入,你将1900-1-1 往前调两天调成 1899-12-30   就能得到2019-06-10

  • 4关注人数
  • 760浏览人数
  • 最后回答于:2019-6-10 10:07
    请选择关闭问题的原因
    确定 取消
    返回顶部