困难的SQL Server查询-转换12到24小时的时间

2020-02-22 sql sql-server tsql

我有一些大型数据库表,其中的时间字段为12小时AM / PM格式。它们是varchar(10)字段(对此我无能为力)。无论如何,我的任务是将它们更改为24小时格式。这是我添加的带有两列的“原始”数据。最后两列是我通过字符串函数创建的“帮助”列。

在此处输入图片说明

因此,我的逻辑是,如果我可以将小时数分开,并且如果后两个时间是“ PM”,则增加12个小时或类似的时间。我的主要问题是我使用的语法是否正确。运行它时,我只会得到一行,所以我不确定是否要正确转换数据。基本上,我想使用该顶级表,将CaptureTime1的小时数解析为整数,如果需要,则添加12,然后(最终)获得带有“新”小时数的另一列,然后将时间粘贴回去。

我可能会使此方法过于复杂,因此我可以在下面的代码中使用反馈,但是如果有人对我有更有效的方式执行此操作(我确信90%的确是这样),那么我无所不能。

在此处输入图片说明

Answers

如果我了解您的目标,在我看来,您就是对此有所考虑。这对您有用吗?

SELECT LEFT(CONVERT(TIME, CaptureTime, 8), 5) AS NewHours
FROM Capture

只需使用SQL

SELECT CaptureDate
      ,CaptureTime
      ,left(convert(varchar, CONVERT(DATETIME, CaptureTime, 102), 24),5) as t24
  FROM [StackOver].[dbo].[Convert12to24hourtime]

CaptureDate             CaptureTime t24
2019-05-20 12:00:00.000 07:55       07:55
2019-06-22 00:00:00.000 08:43 AM    08:43
2019-06-22 12:00:00.000 08:51 am    08:51
2019-06-28 00:00:00.000 12:07 PM    12:07

Related