首页 > 解决方案 > 将日期时间从 12 小时格式转换为 24 小时格式

问题描述

给定以下数据:

+--------------------------+--------------------------+
| Started                  | Ended                    |
+--------------------------+--------------------------+
| 2020-06-08 01:09:46.000  | 2020-06-08 01:29:51.000  |
| 2020-06-09 12:55:40.000  | 2020-06-09 01:28:33.000  |
| 2020-06-10 12:59:30.000  | 2020-06-10 01:24:37.000  |
+--------------------------+--------------------------+

我需要将这些转换为 24 小时格式。我的最终目标是获得这两个值之间的时间差(以分钟为单位),但它是 12 小时格式的事实阻碍了我的努力。

不幸的是,它们是有效值,datetime因此对这些值运行CONVERTCAST命令不会做任何事情。

那么如何将这些值转换为 24 小时格式呢?

我已经查看了在 sql server 中将 12 小时格式转换为 24 小时格式的答案

还是不知所措。

提前致谢!

标签: sql-server

解决方案


无需转换日期时间即可获得分钟差

利用 DATEDIFF 函数获取两个日期之间的净分钟差。

使用模数函数,删除归因于日差的分钟。

在下面的示例中,有 6 小时的差异(6 小时 * 60 分钟/小时)= 360 分钟的差异。

 --need some sample data
with smple AS ( SELECT
    getdate()                                                AS start_dt,
    dateadd(day, 1, dateadd(hour, 6, getdate()))             AS end_dt)
--end sample data
SELECT
    start_dt,
    end_dt,
    datediff(minute, start_dt, end_dt) %1440 as Min_Diff
FROM smple;

结果集:

在此处输入图像描述


推荐阅读