数据类型不一致应为date却获得number?

dis_date 是日期类型,s_date 和e_date 也是日期型。我不想将他们转成字串进行比较。想直接用日期格式进行比较。请问这里应该怎么写?格式报错.png

FineReport seekfuture 发布于 2020-12-1 10:08
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
2
axingLv6专家互助
发布于2020-12-1 10:33

s_date 和e_date 的日期型是帆软的日期型,不是对应数据库的日期型。

控件返回值类型为日期型,可以在公式中直接当成日期型来运算。

如:s_date的值为2020-12-01

如果返回日期型,计算前一天就可以直接用 $s_date-1

如果返回字符型,计算前一天就要使用datedelta($s_date,-1),日期型也可以用这公式。

这个数据类型,是指在帆软的运算环境中。

但是用到sql中作为参数,无论下拉框返回的是什么类型,最终都是先拼接成一条完整的sql语句,再去数据库中执行。

在拼接完的sql中,就是一长串的字符串,不会保留参数的类型。

如果你想不改变字段的日期型来执行,那就要先将参数转为日期型

and a.disdate>=to_date('${s_date}','yyyy-MM-dd')


  • seekfuture seekfuture(提问者) 谢谢,我终于搞清楚了这个日期类型和数据库的不是一样的
    2020-12-01 13:28 
最佳回答
0
krystal033Lv7高级互助
发布于2020-12-1 10:09(编辑于 2020-12-1 10:10)

'{$s_date}' 这样就行了 不然那不行 


  • seekfuture seekfuture(提问者) 这样不就是转成字符串了吗
    2020-12-01 10:11 
  • krystal033 krystal033 回复 seekfuture(提问者) 你先这样写 反正没有问题的
    2020-12-01 10:11 
最佳回答
0
LSQ000Lv5中级互助
发布于2020-12-1 10:11(编辑于 2020-12-1 10:12)

and TO_CHAR(a.dis_date, 'yyyy/MM/dd') >= '${s_date}'
and TO_CHAR(a.dis_date, 'yyyy/MM/dd') >= '${e_date}'

最佳回答
0
asanguosha4252Lv5初级互助
发布于2020-12-1 10:11

image.png

  • 5关注人数
  • 1241浏览人数
  • 最后回答于:2020-12-1 10:33
    请选择关闭问题的原因
    确定 取消
    返回顶部