如何在SQL中对参数进行格式化

如题,假设日期参数控件名为${time} ,格式为yyyy-mm-dd

在其中一个数据集取数中要求数据匹配到月份的数据就行,

即xxtime(备注:该字段格式为yyyy-mm) = '${time}'

要怎么写SQL可以将${time}格式变为yyyy-mm


贴一下自己写的SQL语句,方便理解需求

表里的年year和月month是分开的两列

SELECT * FROM XXXX

where 

 concat_ws('-',trim(to_char(year,'9999')),trim(to_char(month,'99'))) >=  to_char('${start_time}', 'yyyy-mm') 

 and concat_ws('-',trim(to_char(year,'9999')),trim(to_char(month,'99'))) <=   to_char('${end_time}', 'yyyy-mm') 


访客登录 发布于 2020-11-13 17:04 (编辑于 2020-11-13 17:13)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
访客登录Lv6初级互助
发布于2020-11-14 08:58(编辑于 2020-11-14 09:03)

感谢评论朋友提供的帮助,但是可能是实际数据的特殊情况,没有很好的解决,自己搞了一个比较麻烦的方法

image.png

最佳回答
0
luojian0323Lv7资深互助
发布于2020-11-13 17:06

left('${time}',7)

最佳回答
0
沉默的反补Lv6中级互助
发布于2020-11-13 17:12(编辑于 2020-11-13 17:18)
Oracle:
        select 
            * 
        from a
        where
            year || month = to_char('${time}','YYYY-MM')
Mysql:
    
    CONCAT(year,"-",month…)>= DATE_FORMAT('${time}','%m-%d-%Y')


  • 访客登录 访客登录(提问者) 第一个tochar的语句我写了,但是报错,我把${time}两边的引号去掉报表就不报错了,但是在数据集里预览数据结果的时候却显示报错,也不知道这方法是对的还是错的
    2020-11-13 17:17 
  • 沉默的反补 沉默的反补 回复 访客登录(提问者) 第一个适用于Oracle数据库,Mysql的拼接是使用CONCAT()函数
    2020-11-13 17:19 
  • 访客登录 访客登录(提问者) 回复 沉默的反补 我这用的是postgreSQL,是不是也不一样
    2020-11-13 17:23 
  • 沉默的反补 沉默的反补 回复 访客登录(提问者) postgreSQL和Oracle的拼接方式一样,都是使用 ||进行拼接呀。。怎么,行不通吗
    2020-11-13 17:24 
  • 访客登录 访客登录(提问者) 回复 沉默的反补 不行,我感觉前面字段的拼接应该是没问题的,主要是后面,报表报错提示to_char(unkown,unkown)
    2020-11-13 17:30 
  • 2关注人数
  • 409浏览人数
  • 最后回答于:2020-11-14 09:03
    请选择关闭问题的原因
    确定 取消
    返回顶部