急,oracle转sql server

czmchen 2010-04-16 05:41:53
oracle中
select to_timestamp('2010-04-16 16:52:04.093','YYYY-MM-DD HH24:MI:SS.FF3') from dual; 结果是:16-APR-10 04.52.04.093000000 PM





如何在SQL SERVER 中实现这样的功能

用程序处理也可以,急起来没思路啦
...全文
101 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
htl258_Tony 2010-04-17
  • 打赏
  • 举报
回复
if object_id('dbo.getdt') is not null
drop function dbo.getdt
go
create function dbo.getdt(@dt datetime)
returns nvarchar(30)
as
begin
return(datename(dd,@dt)+'-'+
case month(@dt)
when 1 then 'Jan'
when 2 then 'Feb'
when 3 then 'Mar'
when 4 then 'Apr'
when 5 then 'May'
when 6 then 'Jun'
when 7 then 'Jul'
when 8 then 'Aug'
when 9 then 'Sep'
when 10 then 'Oct'
when 11 then 'Nov'
else 'Dec'
end+'-'+right(datename(yy,@dt),2)+' '+
stuff(right('0'+ltrim(stuff(
replace(convert(varchar,@dt,9),':','.')
,1,10,'')),14),13,0,' ')
)
end
go
--调用:
select dbo.getdt('2010-04-16 16:52:04.093')
--result:
--16-Apr-10 04.52.04.093 PM
还有一点点小错误,改一下。16点应该显示为4点
czmchen 2010-04-17
  • 打赏
  • 举报
回复
问题解决了,谢谢大家
htl258_Tony 2010-04-17
  • 打赏
  • 举报
回复
if object_id('dbo.getdt') is not null
drop function dbo.getdt
go
create function dbo.getdt(@dt datetime)
returns nvarchar(30)
as
begin
return(select datename(dd,@dt)+'-'+
case month(@dt)
when 1 then 'Jan'
when 2 then 'Feb'
when 3 then 'Mar'
when 4 then 'Apr'
when 5 then 'May'
when 6 then 'Jun'
when 7 then 'Jul'
when 8 then 'Aug'
when 9 then 'Sep'
when 10 then 'Oct'
when 11 then 'Nov'
else 'Dec'
end+'-'+right(datename(yy,@dt),2)+' '+
replace(convert(varchar,@dt,14),':','.')+
case when cast(convert(varchar,@dt,8) as datetime)
between '00:00:00' and '11:59:59' then ' AM'
else ' PM'
end)
end
go
--调用:
select dbo.getdt('2010-04-16 16:52:04.093')
--result:
--16-Apr-10 16.52.04.093 PM
czmchen 2010-04-17
  • 打赏
  • 举报
回复
把一时间按'YYYY-MM-DD HH24:MI:SS.FF3转化成16-APR-10 04.52.04.093000000 PM
这种形式
永生天地 2010-04-16
  • 打赏
  • 举报
回复
select convert(datetime,'2010-04-16 16:52:04.093')
--小F-- 2010-04-16
  • 打赏
  • 举报
回复
--日期转换参数,值得收藏
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08

select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20040912110608

select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12

select CONVERT(varchar(12) , getdate(), 112 )
20040912

select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12

其它我不常用的日期格式转换方法:

select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004

select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004

select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004

select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004

select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004

select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004

select CONVERT(varchar(12) , getdate(), 108 )
11:06:08

select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1

select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004

select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1

select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177
老黎 2010-04-16
  • 打赏
  • 举报
回复

--convert作用:时间转字符串
--120是一种时间格式,更多格式请百度convert
select convert(varchar,getdate(),120)
--结果
/*2010-04-16 19:15:36*/
老黎 2010-04-16
  • 打赏
  • 举报
回复
你是要实现格式,还是要导入一个时间?

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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