sql server 字符串格式化

littlekey0424 2011-07-03 10:04:52
假设stime=095230
如何将这个字段转化为:09:52:30
在access中,可以使用format函数,在oracle中,可以使用to_char函数,在sql server中用的是什么呢?
我自己用比较笨的办法:
left(stime,2) + ':' + substring(stime,3,2) + ':' +right(stime,2)
是否还有其他更加简便的方法?谢谢
...全文
366 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ycmail 2011-07-12
  • 打赏
  • 举报
回复
楼上的结果是 95:23:0

首位的0 丢了
littlekey0424 2011-07-04
  • 打赏
  • 举报
回复
谢谢,按照6楼的思路,使用stuff(stuff(@s,3,0,':'),6,0,':')就可以得到
大力水手 2011-07-04
  • 打赏
  • 举报
回复
数据量不大的情况下导出数据到access里面弄好了在导入sql里面...也许更麻烦
htl258_Tony 2011-07-04
  • 打赏
  • 举报
回复
if OBJECT_ID('fn_str')>0
drop function fn_str
go
create function fn_str(@s varchar(6))
returns varchar(8)
as
begin
return stuff(stuff(@s,3,0,':'),6,0,':')
end
go
--调用
declare @s varchar(6)='095230'
select dbo.fn_str(@s)
/*
--------
09:52:30

(1 行受影响)
*/
htl258_Tony 2011-07-04
  • 打赏
  • 举报
回复
方法主要还是靠字符串函数,从使用的角度,建议写个自定义函数,直接调用函数更加方便。
老潘 2011-07-04
  • 打赏
  • 举报
回复
暂时没想到好的办法,关注
claro 2011-07-03
  • 打赏
  • 举报
回复
还是手工的方式。
littlekey0424 2011-07-03
  • 打赏
  • 举报
回复
难道没有其他办法了吗?因为有很多这样的东西,他们设计数据库的时候,存储的格式不对。
我试过使用CONVERT函数,但是达不到我的效果
--小F-- 2011-07-03
  • 打赏
  • 举报
回复
就只有你的这个办法了 没有其他比较好的了

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧