SqlServer如何将两个文本字段合并后转换成datetime类型? 50
我这个有点复杂,一下子没有思路,请大家帮忙。源表:0847源字段:field0054(文本/255)源数值举例:2017年field0053(文本/255)源数值举例:1...
我这个有点复杂,一下子没有思路,请大家帮忙。
源表:0847
源字段:
field0054(文本/255) 源数值举例:2017年
field0053(文本/255) 源数值举例:1月
目的表:6831
目的字段:field0020(datetime) 目的值举例:2017-01-01
现在需要把源表那两个字段update到目的表的field0020字段,形成2017-01-01这种格式 展开
源表:0847
源字段:
field0054(文本/255) 源数值举例:2017年
field0053(文本/255) 源数值举例:1月
目的表:6831
目的字段:field0020(datetime) 目的值举例:2017-01-01
现在需要把源表那两个字段update到目的表的field0020字段,形成2017-01-01这种格式 展开
2个回答
展开全部
不好意思,没有sqlserver,用oracle亲测。 你换下语法就ok。思路应该能看的懂吧,先把字段里的‘年’,‘月’字符去掉,然后是处理一位数月份(1)的数据,变更为‘01’。然后再拼接,格式化更新
merge into a_6831 a
using a_0847 b
on(a.id_=b.id_)
when matched then
update set a.newdate=to_date((select substr(year,1,instr(year,'年')-1) ||
case when length(substr(moth,1,instr(moth,'月')-1))=1 then 0||substr(moth,1,instr(moth,'月')-1)
when length(substr(moth,1,instr(moth,'月')-1))=2 then substr(moth,1,instr(moth,'月')-1)
end a from a_0847 aa where aa.id_=a.id_),'yyyy-mm');
commit;
更多追问追答
追问
非常感谢。我先试一下哈,不晓得语法我能不能换正确,我先试一下。
追答
拼接符号||,substr(),instr() to_date() merge into。 替换的时候注意下标,sqlserver一般从0开始,oracle一般从1开始
展开全部
update 6831 set field0020=Convert(varchar(30),field0054)+'-'+Convert(varchar(30),field0053)+'-'+'01'
更多追问追答
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询