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)

可是显示 从字符串转换日期和/或时间时,转换失败。

求大神支招!!!
展开
 我来答
badkano
推荐于2017-12-15 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部

首先

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)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式