偷藏星光赠你
2020-12-08 14:40
采纳率: 66.7%
浏览 74

SQL字符串转时间datetime

 

select时,time字段是datetime2,time2字段是varchar,可以将time2这样的字符串转成datetime或者datetime2吗

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

8条回答 默认 最新

  • 代码的灵魂是bug! 2020-12-09 14:59
    已采纳

    SELECT CONVERT(datetime, SUBSTRING(time2,1,4)+'/'+SUBSTRING(time2,5,2)+'/'+SUBSTRING(time2,7,2)+''    +SUBSTRING(time2,9,2)+':'+SUBSTRING(time2,11,2)+':'+SUBSTRING(time2,13,2), 120)

    打赏 评论
  • Quibbling Tow 2020-12-08 15:01

    convert(time2,datetime)即可

    打赏 评论
  • 偷藏星光赠你 2020-12-08 15:16

    这个会提示字符串转换日期时,转换失败。

    打赏 评论
  • qq_25376897 2020-12-08 15:19

    打赏 评论
  • 偷藏星光赠你 2020-12-08 15:35

    您这个是mysql吧?sql server用这个会报错,有sql server2012的方法嘛?

    打赏 评论
  • qq_25376897 2020-12-08 15:52

    sql server不是很熟,不过,一样有convert函数,不过它这个要指定格式,第3个参数就是格式,不过它的格式好像都是写死的,不知道有没有你截图里面那种格式

    convert(datetime, '20201208',112)   

    打赏 评论
  • 偷藏星光赠你 2020-12-10 14:57

    万分感谢,学习到了。

    打赏 评论
  • 偷藏星光赠你 2020-12-10 15:01
    select *,datediff(n,CONVERT(smalldatetime,SUBSTRING(A.time2,1,4)+'/'+SUBSTRING(A.time2,5,2)+'/'+SUBSTRING(A.time2,7,2)+'  '+SUBSTRING(A.time2,9,2)+':'+SUBSTRING(A.time2,11,2)+':'+SUBSTRING(A.time2,13,2), 120),CONVERT(smalldatetime,SUBSTRING(B.time2,1,4)+'/'+SUBSTRING(B.time2,5,2)+'/'+SUBSTRING(B.time2,7,2)+'  '+SUBSTRING(B.time2,9,2)+':'+SUBSTRING(B.time2,11,2)+':'+SUBSTRING(B.time2,13,2), 120))
    from test A
    cross apply (select top 1 time2 from test where A.name=name and ZT='进' and time2>A.time2 order by time2) as B
    where  ZT='出'
    --smalldatetime是去除毫秒

     

     

    打赏 评论

相关推荐 更多相似问题