YYYYMMDDHHMISS格式转换成datetime的问题(再线等)

qiangorqiang 2009-08-21 08:55:39
YYYYMMDDHHMISS格式转换成日期oracle有方便的函数(to_date)
请问各位sql server 2000有类似的方法或函数没有?
...全文
420 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
feixianxxx 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 qiangorqiang 的回复:]
看来没有比较直接的办法,也只有在客户端处理了再发到服务器上了。不过还是感谢大家的回帖。
[/Quote]
14 楼 不直接阿。。呵呵
qiangorqiang 2009-08-21
  • 打赏
  • 举报
回复
看来没有比较直接的办法,也只有在客户端处理了再发到服务器上了。不过还是感谢大家的回帖。
  • 打赏
  • 举报
回复
16楼的,sql server在一些方面还是没oracle强大
十八道胡同 2009-08-21
  • 打赏
  • 举报
回复

declare @ddh_person varchar(50)
set @ddh_person='20090801155033'


select
substring(@ddh_person,1,4) + ':' +
substring(@ddh_person,5,2) + ':'+
substring(@ddh_person,7,2) + ' '+
substring(@ddh_person,9,2) + ':'+
substring(@ddh_person,11,2) + ':'+
substring(@ddh_person,13,2)


2009:08:01 15:50:33
devilidea 2009-08-21
  • 打赏
  • 举报
回复
复习下
十八道胡同 2009-08-21
  • 打赏
  • 举报
回复
http://www.51testing.com/?uid-161036-action-viewspace-itemid-83232
参考下这个
自己写个不是更高兴
xiequan2 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 qiangorqiang 的回复:]
引用 12 楼 xiequan2 的回复:
引用 11 楼 qiangorqiang 的回复:
感谢大家的回帖。
不过我是希望直接把20090801155033转换成datetime,请问有直接的方法没有。
SQL codeselectcast(left('20090801155033',8)asdatetime)

可以执行,不过缺少时间部分的数据。
[/Quote]

declare @s varchar(50)
set @s='20090801155033'

select cast(left(@s,8) +' '+substring(@s,9,2)+':'+substring(@s,11,2)+':'+substring(@s,13,2) as datetime)
十八道胡同 2009-08-21
  • 打赏
  • 举报
回复
select convert(datetime,'20090801155033',20) 
feixianxxx 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qiangorqiang 的回复:]
感谢大家的回帖。
不过我是希望直接把20090801155033转换成datetime,请问有直接的方法没有。
[/Quote]

declare @s varchar(29)
set @s='20090801155033'
select cast (DATEADD(SECOND,cast(substring(@s,13,2) as int),
DATEADD(minute,cast(substring(@s,11,2) as int),
dateadd(hour,cast( substring(@s,9,2) as int),convert(datetime,LEFT(@s,8),120)))) as datetime)

-----------------------
2009-08-01 15:50:33.000


qiangorqiang 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 xiequan2 的回复:]
引用 11 楼 qiangorqiang 的回复:
感谢大家的回帖。
不过我是希望直接把20090801155033转换成datetime,请问有直接的方法没有。
SQL codeselectcast(left('20090801155033',8)asdatetime)
[/Quote]
可以执行,不过缺少时间部分的数据。
xiequan2 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qiangorqiang 的回复:]
感谢大家的回帖。
不过我是希望直接把20090801155033转换成datetime,请问有直接的方法没有。
[/Quote]
select cast(left('20090801155033',8) as datetime)
qiangorqiang 2009-08-21
  • 打赏
  • 举报
回复
感谢大家的回帖。
不过我是希望直接把20090801155033转换成datetime,请问有直接的方法没有。
feixianxxx 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qiangorqiang 的回复:]
引用 7 楼 herowang 的回复:
convert(datetime,col,120)

select convert(datetime,'20090801155033',120)
报错。
[/Quote]

--字符转换为日期时,Style的使用

--1. Style=101时,表示日期字符串为:mm/dd/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',101)
--结果:2003-11-01 00:00:00.000

--2. Style=101时,表示日期字符串为:dd/mm/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',103)
--结果:2003-01-11 00:00:00.000
qiangorqiang 2009-08-21
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 herowang 的回复:]
convert(datetime,col,120)
[/Quote]
select convert(datetime,'20090801155033',120)
报错。
  • 打赏
  • 举报
回复
哎,这两个F疯了
  • 打赏
  • 举报
回复
convert(datetime,col,120)
--小F-- 2009-08-21
  • 打赏
  • 举报
回复
SQL Server 日期算法

一周的第一天
select @@DATEFIRST

一个月的第一天
select dateadd(mm,datediff(mm,0,getdate()),0)

本周的星期一
select dateadd(wk,datediff(wk,0,getdate()),0)

一年的第一天
SELECT DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)

季度的第一天
SELECT DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)

当天的零时
SELECT DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)

上个月的最后一天 :本月第一天减2ms.
SELECT dateadd(ms,-2,DATEADD(mm, DATEDIFF(mm,0,getdate()), 0))

本月的最后一天
SELECT dateadd(ms,-2,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0))

本月的第一个星期一

去掉时分秒
DATEADD(day, DATEDIFF(day,0,getdate()), 0)
显示星期几
select datename(weekday,getdate())
如何取得某个月的天数
SELECT Day(dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate())+1, 0)))

判断是否闰年:
SELECT case day(dateadd(mm, 2, dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))))
when 28 then '平年' else '闰年' end
一个季度多少天
declare @m tinyint,@time smalldatetime
select @m=month(getdate())
select @m=case when @m between 1 and 3 then 1
when @m between 4 and 6 then 4
when @m between 7 and 9 then 7
else 10 end
select @time=datename(year,getdate())+'-'+convert(varchar(10),@m)+'-01'
select datediff(day,@time,dateadd(mm,3,@time))
feixianxxx 2009-08-21
  • 打赏
  • 举报
回复
--字符转换为日期时,Style的使用

--1. Style=101时,表示日期字符串为:mm/dd/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',101)
--结果:2003-11-01 00:00:00.000

--2. Style=101时,表示日期字符串为:dd/mm/yyyy格式
SELECT CONVERT(datetime,'11/1/2003',103)
--结果:2003-01-11 00:00:00.000


/*== 日期转换为字符串 ==*/
DECLARE @dt datetime
SET @dt='2003-1-11'

--1. Style=101时,表示将日期转换为:mm/dd/yyyy 格式
SELECT CONVERT(varchar,@dt,101)
--结果:01/11/2003

--2. Style=103时,表示将日期转换为:dd/mm/yyyy 格式
SELECT CONVERT(varchar,@dt,103)
--结果:11/01/2003


/*== 这是很多人经常犯的错误,对非日期型转换使用日期的style样式 ==*/
SELECT CONVERT(varchar,'2003-1-11',101)
--结果:2003-1-11
--小F-- 2009-08-21
  • 打赏
  • 举报
回复
convert(datetime,col)
feixianxxx 2009-08-21
  • 打赏
  • 举报
回复
Select     
CONVERT(varchar, getdate(), 1),--mm/dd/yy
CONVERT(varchar, getdate(), 2),--yy.mm.dd
CONVERT(varchar, getdate(), 3),--dd/mm/yy
CONVERT(varchar, getdate(), 4),--dd.mm.yy
CONVERT(varchar, getdate(), 5),--dd-mm-yy
CONVERT(varchar, getdate(), 10),--mm-dd-yy
CONVERT(varchar, getdate(), 11),--yy/mm/dd
CONVERT(varchar, getdate(), 12)--yymmdd
----带世纪号
select convert(varchar(10),getdate(),100) --06 15 2007 或0
select convert(varchar(10),getdate(),102) --2007.06.15
select convert(varchar(10),getdate(),103) --15/06/2007
select convert(varchar(10),getdate(),104) --15.06.2007s
select convert(varchar(10),getdate(),105) --15-06-2007
select convert(varchar(10),getdate(),106) --15 06 2007
select convert(varchar(10),getdate(),107) --06-15,200
select convert(varchar(10),getdate(),108) --10:06:46 当前时间
select convert(varchar(10),getdate(),109) --06 15 2007 或者9
select convert(varchar(10),getdate(),110) --06-15-2007
select convert(varchar(10),getdate(),111) --2007/06/15
select convert(varchar(10),getdate(),112) --20070615
select convert(varchar(10),getdate(),113) --15 06 2007 或者13
select convert(varchar(10),getdate(),114) --10:10:37:0
select convert(varchar(10),getdate(),120) --2007-06-15 或20
select convert(varchar(30),getdate(),121) --2007-06-15 10:11:45.040 或21
select convert(varchar(30),getdate(),126) --2007-06-15T10:12:44:603
select convert(varchar(50),getdate(),127) --2007-06-15T10:14:35:433 说带时区
select convert(varchar(40),getdate(),130) --回历dd mon yyyy hh:mi:ss:mmmAM
select convert(varchar(30),getdate(),131) --30/05/1428 10:17:19:470AM

GO
加载更多回复(2)

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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