【问题标题】:SQL convert string to time formatSQL将字符串转换为时间格式
【发布时间】:2025-11-27 21:20:09
【问题描述】:

我想将字符串时间'141312110' 转换为:'14:13:12.110'

实际上,我有bigint 列有'20151110182425000' 之类的数据,我想将它们转换为datetime 之类的格式

'10-11-2015 18:24:25.000'  

我将它们划分为日期和时间以获取日期部分使用:

Convert(varchar(10), convert(datetime, '20151110'),105)

Result : '10-11-2015'

并且需要这样的时间部分。

【问题讨论】:

  • 您使用的是什么 DBMS(SQL Server、MySQL、Oracle 等)?您使用的是什么版本的 DBMS?答案会因情况而异。
  • 这与获取日期部分相同,您转换为 varchar 并解析字符串。你卡在哪一部分了?
  • 根据convert()datetime的用法添加了sql-server标签
  • @tab alleman 时间部分没有以相同的方式获取导致转换日期时间,时间格式不马赫。
  • @siyual 使用 MSSQL 2008

标签: sql sql-server date time


【解决方案1】:

您可以将原始字符串转换为“YYYY-MM-DDTHH:MM:SS.SSS”格式。无论国际化设置如何,这都应被识别为日期时间。

你可以用一堆stuff()s 做到这一点:

select cast(stuff(stuff(stuff(stuff(stuff(cast(val as varchar(255), 15, 0, '.'
                                         ), 13, 0, ':'
                                   ), 11, 0, ':'
                             ), 9, 0, 'T'
                       ), 7, 0, '-'
                 ), 5, 0, '-'
             as datetime)

【讨论】:

  • 是的,我也这样做了,但是我需要 dd-mm-YYYY hh:mm:ss,并且不能使用这些东西来做到这一点,或者我没有发现使用这些东西的方法跨度>