如何将varchar的值设置为datetime变量

时间:2014-11-13 07:09:16

标签: sql sql-server tsql

我有两个变量,一个是varchar,另一个是datetime。我需要将varchar转换为datetime

declare @startdate as varchar(10)= '1/1/2013 1:60AM'
declare @enddate as varchar(10)= '1/1/2014 1:60AM'
declare @startdTime datetime

set @ startdTime =cast(@startdate as datetime)

然而,此转换会导致错误:

  

将varchar数据类型转换为日期时间数据类型会导致超出范围的值。

如何在没有错误的情况下进行转换?我在stackoverflow上看到了几个示例,但未能获得解决方案,需要有关此问题的帮助。

如有任何疑问,请提前致谢

4 个答案:

答案 0 :(得分:1)

确定时间。是1.60AM

declare @startdate as varchar(50)= '01/01/2013 1:00 AM'
declare @enddate as varchar(50)= '01/01/2014 1:00 AM'
declare @startdTime datetime

set @startdTime =cast(@startdate as datetime)
print @startdTime

答案 1 :(得分:1)

输入字符串凌晨1:60 凌晨1:06

的问题
declare @startdate as varchar(20)= '1/1/2013 1:06AM'
declare @enddate as varchar(20)= '1/1/2014 1:06AM'
declare @startdTime datetime

SELECT CONVERT( VARCHAR(20), @startdate ,101) 
SELECT CAST(CONVERT( VARCHAR(30), @startdate ,101) AS DATETIME)

enter image description here

答案 2 :(得分:0)

此处'1/1/2013 01:60 AM'超过10个字符。将其增加到20或更多

喜欢

@startdate AS VARCHAR(25)
@enddate AS VARCHAR(25)

N:B:

 There is nothing like '1:60 AM',Make it "2:00 AM" or "1:06 AM" 

答案 3 :(得分:0)

MS SQL的不同类型的日期时间格式