sql 里怎么把varchar转成datetime格式

haistill 2012-12-26 02:42:00
我的表格里有一列数据是15-3-2011 0:00:00类似的数据,类型是varchar(50)的,现在我要把这个跟2011-01-01比较,应该怎么转格式?
...全文
2996 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
q670590806 2015-06-23
  • 打赏
  • 举报
回复
不太懂,我是想直接改表结构.我右键修改表类型.datetime会报错.请教下大婶们要怎样弄
QingT26 2013-10-27
  • 打赏
  • 举报
回复
参考下我这条 select top 20 * from (select row_number() over(order by number asc) as newnuber,* from CallRecord_View) as newtable where newtable.newnuber > 20*(1-1) and begintime>=Convert(varchar(100),'2013-10-18 00:00:00') and endtime<=Convert(varchar(100),'2013-10-18 18:59:59')
haistill 2012-12-26
  • 打赏
  • 举报
回复
引用 7 楼 TravyLee 的回复:
引用 6 楼 haistill 的回复:引用 3 楼 TravyLee 的回复:SQL code?12345678910111213141516171819202122232425262728if OBJECT_ID('f_ToDate') is not nulldrop function f_ToDategocreate function f_ToDate( @D……
我自己改好了,因为后面的时分秒不是很重要,我直接删掉了,谢谢
haistill 2012-12-26
  • 打赏
  • 举报
回复
引用 7 楼 TravyLee 的回复:
引用 6 楼 haistill 的回复:引用 3 楼 TravyLee 的回复:SQL code?12345678910111213141516171819202122232425262728if OBJECT_ID('f_ToDate') is not nulldrop function f_ToDategocreate function f_ToDate( @D……
不行啊,遇到时分秒不是00:00:00的会报错“从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值”,求帮忙啊。。。
  • 打赏
  • 举报
回复
引用 6 楼 haistill 的回复:
引用 3 楼 TravyLee 的回复:SQL code?12345678910111213141516171819202122232425262728if OBJECT_ID('f_ToDate') is not nulldrop function f_ToDategocreate function f_ToDate( @Date varchar(50))retu……
我考虑到了的啊 你直接调用函数就行了 select col1,dbo.f_ToDate(col2) as col2 ... ... from tb
haistill 2012-12-26
  • 打赏
  • 举报
回复
引用 3 楼 TravyLee 的回复:
SQL code?12345678910111213141516171819202122232425262728if OBJECT_ID('f_ToDate') is not nulldrop function f_ToDategocreate function f_ToDate( @Date varchar(50))returns datetimeasbegin-……
可以用了,谢谢哈,可是还有个问题,有的数据后面的时分秒不是00:00:00,而是有具体的时间的,这该怎么改?
haistill 2012-12-26
  • 打赏
  • 举报
回复
引用 3 楼 TravyLee 的回复:
SQL code?12345678910111213141516171819202122232425262728if OBJECT_ID('f_ToDate') is not nulldrop function f_ToDategocreate function f_ToDate( @Date varchar(50))returns datetimeasbegin-……
不太懂啊,能不能知道下这代码怎么用?能不能把一张表里的类似日期都完全处理好啊?
發糞塗牆 2012-12-26
  • 打赏
  • 举报
回复
Select CONVERT(varchar(100), GETDATE(), 0)--05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1)--05/16/06
Select CONVERT(varchar(100), GETDATE(), 2)--06.05.16
Select CONVERT(varchar(100), GETDATE(), 3)--16/05/06
Select CONVERT(varchar(100), GETDATE(), 4)--16.05.06
Select CONVERT(varchar(100), GETDATE(), 5)--16-05-06
Select CONVERT(varchar(100), GETDATE(), 6)--16 05 06
Select CONVERT(varchar(100), GETDATE(), 7)--05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8)--10:57:46
Select CONVERT(varchar(100), GETDATE(), 9)--05 16 200610:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10)--05-16-06
Select CONVERT(varchar(100), GETDATE(), 11)--06/05/16
Select CONVERT(varchar(100), GETDATE(), 12)--060516
Select CONVERT(varchar(100), GETDATE(), 13)--16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14)--10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20)--2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21)--2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22)--05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23)--2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24)--10:57:47
Select CONVERT(varchar(100), GETDATE(), 25)--2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100)--05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101)--05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102)--2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103)--16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104)--16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105)--16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106)--16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107)--05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108)--10:57:49
Select CONVERT(varchar(100), GETDATE(), 109)--05 16 200610:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110)--05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111)--2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112)--20060516
Select CONVERT(varchar(100), GETDATE(), 113)--16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114)--10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120)--2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121)--2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126)--2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130)--18 ???? ?????? 142710:57:49:907AM
Select CONVERT(varchar(100), GETDATE(), 131)--18/04/142710:57:49:920AM
  • 打赏
  • 举报
回复

if OBJECT_ID('f_ToDate') is not null
drop function f_ToDate
go
create function f_ToDate
(
	@Date varchar(50)
)
returns datetime
as
begin
--declare @Date varchar(50)='15-3-2011 0:00:00'
declare @day varchar(2)
declare @month varchar(2)
declare @year varchar(4)
select @day=left(@Date,CHARINDEX('-',@Date)-1)
--print @day
select @month=substring(@Date,CHARINDEX('-',@Date)+1,charindex('-',@Date,CHARINDEX('-',@Date)+1)-CHARINDEX('-',@Date)-1)
--print @month
select @year=right(replace(@Date,' 0:00:00',''),4)
--print @year
return @year+'-'+@month+'-'+@day+right(@Date,8)
end
go

select dbo.f_ToDate('15-3-2011 0:00:00')
/*
2011-03-15 00:00:00.000
*/
jiangshun 2012-12-26
  • 打赏
  • 举报
回复
DECLARE @str VARCHAR(50) SET @str='15-3-2011 00:00:00' SET @str= PARSENAME(REPLACE(LEFT(@str,CHARINDEX(' ',@str)-1),'-','.'),1)+'-'+ PARSENAME(REPLACE(LEFT(@str,CHARINDEX(' ',@str)-1),'-','.'),2)+'-'+ PARSENAME(REPLACE(LEFT(@str,CHARINDEX(' ',@str)-1),'-','.'),3)
  • 打赏
  • 举报
回复
你那个跟日期的格式都没得匹配的 写个函数转换咯

34,575

社区成员

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

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