如何将不同格式的字符串转换成日期格式

GingerbreadMan 2012-08-09 03:28:13
假设表A中有一个字段birthday,格式为varchar(50),
里面既有 2012-6-5 这样格式,也有 7/28/2006这样的格式。
用select Convert(datetime,birthday) from XXX
和select Cast(birthday as datetime) from XXX
都出现以下的错误:
The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value.
发现 7/28/2006 格式的字符串无法转换。

请问如何将这列转换成日期格式?
...全文
424 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
先统一原数据的格式,然后再转换为日期类型。

转换日期参考

SQL code

--*******************************************************************************
-- 日期转换参数大全
--****************************……
[/Quote]
收藏了
ORAClE SE 2012-08-09
  • 打赏
  • 举报
回复
只有这两种不同的吗?
如果yes
先转换第一种 2012-6-5
UNION ALL
第二种 7/28/2006
问题解决。
wu5224311 2012-08-09
  • 打赏
  • 举报
回复
1楼说的对
  • 打赏
  • 举报
回复
'7/28/2006'这个可以转化为datetime的,
你自己试试 select Cast('7/28/2006' as datetime)  or select convert(datetime,'7/28/2006')

应该是其它值有问题
Mr_Nice 2012-08-09
  • 打赏
  • 举报
回复
先统一原数据的格式,然后再转换为日期类型。

转换日期参考

--*******************************************************************************
-- 日期转换参数大全
--********************************************************************************
select CONVERT(varchar,getdate(),120)
--2009-03-15 15:10:02

select CONVERT(varchar(10),getdate(),120)
--2009-03-15

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

select CONVERT(varchar(12) , getdate(), 111)
--2009/03/15

select CONVERT(varchar(12) , getdate(), 112)
--20090315

select CONVERT(varchar(12) , getdate(), 102)
--2009.03.15

select CONVERT(varchar(12) , getdate(), 108)
--15:13:26

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

select CONVERT(varchar(12) , getdate(), 101 )
--03/15/2009

select CONVERT(varchar(12) , getdate(), 103 )
--15/03/2009

select CONVERT(varchar(12) , getdate(), 104 )
--15.03.2009

select CONVERT(varchar(12) , getdate(), 105 )
--15-03-2009

select CONVERT(varchar(12) , getdate(), 106 )
--15 03 2009

select CONVERT(varchar(12) , getdate(), 107 )
-- 15, 2009

select CONVERT(varchar(12) , getdate(), 109 )
--03 15 2009

select CONVERT(varchar(12) , getdate(), 110 )
--03-15-2009

select CONVERT(varchar(11) , getdate(), 113 )
--15 03 2009

select CONVERT(varchar(12) , getdate(), 114)
--15:15:55:717

34,590

社区成员

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

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