为了账号安全,请及时绑定邮箱和手机立即绑定

sql server 中,更改字段类型时如何保持原数据的格式???

sql server 中,更改字段类型时如何保持原数据的格式???

开心每一天1111 2018-12-07 07:11:17
大致需求是这样的,我表中有一个字段是 "datetime" 类型的,数据类似于 2014-07-05 10:23:09.500 这样的,由于需求原因需要改成 "nvarchar(50)" ,可是表中已经有很多的数据了,我直接更改字段类型就变成了 "07 05 2014 10:23AM" ,我想要在修改字段类型时或者修改字段类型之后 原数据 变成 "2014年07月05日" 这种格式的,请问我应该怎么做? convert 能转换成 "2014年07月05日 14:01:32" 这种格式吗? 很急,在线等。大家帮忙解决一下,万分感谢!
查看完整描述

26 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

@晓菜鸟: 我能问下一下 DateName(day,'2014-07-09')是什么?里面有哪些代码么?

查看完整回答
反对 回复 2019-01-07
?
万千封印

TA贡献1891条经验 获得超3个赞

第一,SQLSERVER原生是英文的,只是便于多国使用,支持多国语言和多种字符集,但本身还是以英文格式为主;

第二,如果需要转换,可以新增一列,通过自定义函数+trigger的方式自动完成转换和填充的操作;

第三,这种坑爹的需求就不应该在数据端完成,从存储空间和效率来说,有非英文字符掺杂的字符串本身存储空间就高于英文字符(varchar和nvarchar的区别),另外datetime只占8个字节,而你即便用英文+数字的varchar,也至少要20个以上的字节;

查看完整回答
反对 回复 2019-01-07
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

@Albert Fei: 但是现在得用于前端显示,所以DateName(day,'2014-07-09'),怎么能获取到 '09' ???

查看完整回答
反对 回复 2019-01-07
?
LEATH

TA贡献1936条经验 获得超6个赞

@晓菜鸟: 如果确保以后不用于查询,那也没有什么的

查看完整回答
反对 回复 2019-01-07
?
炎炎设计

TA贡献1808条经验 获得超4个赞

按时间查询的不是这个字段,是另一个字段.

查看完整回答
反对 回复 2019-01-07
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

你改成汉字这个字符串,以后你怎么查询?

查看完整回答
反对 回复 2019-01-07
?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

DateName(day,'2014-07-09'),怎么获取到 '09' ???

查看完整回答
反对 回复 2019-01-07
?
皈依舞

TA贡献1851条经验 获得超3个赞

楼上说的很对,创建新列,然后将内容复制进去,再删除相应字段以及更名相应字段。

查看完整回答
反对 回复 2019-01-07
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

@晓菜鸟: 不用谢,能帮到你最好了。

查看完整回答
反对 回复 2019-01-07
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

@火悬崖: 嗯,有点用,谢谢了.

查看完整回答
反对 回复 2019-01-07
?
慕容森

TA贡献1853条经验 获得超18个赞

@晓菜鸟: 你看看这段代码能不能帮到你:

declare @i nvarchar(50);
declare @str int;
set @i='9';
set @str= cast(@i as int);
if @str<=9
begin
 set @i='0'+@i;
end
select @i;

@i是你求出来的9字符串,@str是临时变量。

查看完整回答
反对 回复 2019-01-07
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

@火悬崖: 返回代表指定日期的指定日期部分的字符串。

查看完整回答
反对 回复 2019-01-07
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

问题我已经解决了,是利用Substring和Convert得到的'09',非常谢谢大家的耐心回答。

查看完整回答
反对 回复 2019-01-07
?
holdtom

TA贡献1805条经验 获得超10个赞

@火悬崖: 我现在应该到了拼接年月日的阶段了,比如:2014-07-09,我拼接之后得到的是"2014年07月9日",上级要求格式统一成"2014年07月09日",但是 DateName(day,'2014-07-09')  得到的却是 9 ,所以我想请问您 怎么得到 ’'09' ???

查看完整回答
反对 回复 2019-01-07
?
青春有我

TA贡献1784条经验 获得超8个赞

@晓菜鸟: 没太懂你的意思,你能得到9这个数字么?如果能得到的话可以参考这段代码?

select (case when Id>9 then '大于10' else '小于10' end) from T_Test

如果你能把其他代码也发一些的话,没准有更多的人能帮到你。

查看完整回答
反对 回复 2019-01-07
?
达令说

TA贡献1821条经验 获得超6个赞

@爱编程的大叔 DateName(day,'2014-07-09'),怎么能获取到 '09' ???

查看完整回答
反对 回复 2019-01-07
?
DIEA

TA贡献1820条经验 获得超2个赞

@火悬崖: 是的,用C#的话我就得写一个小Demo了,重点是我要保持原数据不变,DateName(day,'2014-07-09'),怎么能获取到 '09' ???

查看完整回答
反对 回复 2019-01-07
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

@晓菜鸟: 试过写c#代码或者其他语言的代码了么?通过c#代码来弄应该会很好弄吧!

查看完整回答
反对 回复 2019-01-07
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

@火悬崖: 嗯,我查了一上午都没有找到,竟然没有中国汉字的格式,而且还不允许自定义,我勒个去。

查看完整回答
反对 回复 2019-01-07
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

@晓菜鸟: 貌似没有,好像只有一下这些格式:

查看完整回答
反对 回复 2019-01-07
首页上一页12下一页尾页
  • 26 回答
  • 0 关注
  • 911 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信