SQL中 INT类型的时间如何转化为datetime的时间类型
比如我的int时间为150000000意为15:00:00:000我想转换成datetime的114型,就是不要日期只要时间的15:00:00:000我现在写的是DECL...
比如我的int时间为 150000000 意为 15:00:00:000
我想转换成datetime的114型,就是不要日期只要时间的 15:00:00:000
我现在写的是
DECLARE @SearchTime int = 150000000 --输入查询时间
select cast(convert(varchar(80),@SearchTime,114) as datetime)
可是显示 从字符串转换日期和/或时间时,转换失败。
求大神支招!!! 展开
我想转换成datetime的114型,就是不要日期只要时间的 15:00:00:000
我现在写的是
DECLARE @SearchTime int = 150000000 --输入查询时间
select cast(convert(varchar(80),@SearchTime,114) as datetime)
可是显示 从字符串转换日期和/或时间时,转换失败。
求大神支招!!! 展开
1个回答
展开全部
首先
as datetime后,肯定是带年月日的时间,不可能是你说的那种15:00:00:000
再一个,你传一个整型需要多次类型转换
DECLARE @SearchTime int = 1500000000 --输入查询时间
declare @var varchar(20)
declare @str varchar(20)
select @var=cast(@SearchTime as varchar)
select @str=LEFT(@var,2)+':'+SUBSTRING(@var,3,2)+':'+substring(@var,5,2)+'.'+right(@var,3)
select CONVERT(varchar,@str,114)
最后这个结果也是个字符型的,如果你转成datetime型的,前边就会有1900-1-1了
追问
非常感谢!!!!!
还有一个问题,因为按照第五行的书写,已经强制定了输入值的前两位为hh。
那如果是9:30:00.000要怎么办呢?莫非一定要重写第五行么?
我把convert里面的vatchar改成了time(3),可以得到我想要的格式,但是,因为我在后面要对时间进行加减法,我time数据类型的数据可以直接使用datetime数据类型的计算方式来计算么?还是直接相加减就可以实现?
追答
‘00’+参数 并且限制必须为9位的长度
比如 left('00'+cast(你传的参数 as varchar),9)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询