【问题标题】:How to convert military hours to mm/dd/yyyy and time in SQL sever?如何将军事时间转换为 SQL Server 中的 mm/dd/yyyy 和时间?
【发布时间】:2012-09-21 18:23:31
【问题描述】:

我有一个简单的数据集,如下表 1 所示。我想使用表 1 中的列生成两个新列(START_SHIFT_DT_TIMEEND_SHIFT_DT_TIME)。所需的输出如表 2 所示。

要求是:

  1. 如果START_SHIFT 小时在 22:00:00 或之后开始,则实际开始日期为前一天。
  2. 如果START_SHIFT 小时在 22:00:00 之前开始,则实际开始日期为次日。

我正在使用 SQL 服务器。

表 1

START_SHIFT END_SHIFT       DATE    
22:00:00    06:00:00        1/13/2012 12:00:00 AM
07:00:00    15:00:00        1/13/2012 12:00:00 AM
23:30:00    07:30:00        2/27/2012 12:00:00 AM
00:00:00    08:00:00        2/17/2012 12:00:00 AM
17:00:00    01:00:00        1/1/2012 12:00:00 AM

表 2

START_SHIFT END_SHIFT     DATE                  START_SHIFT_DT_TIME     END_SHIFT_DT_TIME
22:00:00    06:00:00      1/13/2012 12:00:00 AM  1/12/2012 10:00:00 PM  1/13/2012 6:00:00 AM
07:00:00    15:00:00      1/13/2012 12:00:00 AM  1/13/2012 7:00:00 AM   1/13/2012 3:00:00 PM
23:30:00    07:30:00      2/27/2012 12:00:00 AM  2/26/2012 11:30:00 PM  2/27/2012 7:30:00 AM
00:00:00    08:00:00      2/17/2012 12:00:00 AM  2/17/2012 12:00:00 AM  2/17/2012 8:00:00 AM
17:00:00    01:00:00      1/1/2012 12:00:00 AM   1/1/2012 5:00:00 PM    1/2/2012 1:00:00 AM

【问题讨论】:

  • 是的,SQL Server,但是哪个版本?另外,如果您有一些有效的查询,请发布它,不要紧是不正确的,是一个起点,也许您离解决方案不远。
  • @雅罗斯拉夫,感谢您的建议。我使用 SQL Sever 05/08。
  • 然后重新标记您的问题,添加需要的问题;)
  • @Yaroslav - 您可以根据此信息进行建议的编辑。
  • 你有什么理由不这样做;不简单地允许开始移位和结束移位都是 SQL 日期类型(包括 24 小时格式的时间),然后让你的应用程序代码处理以您选择的格式显示开始日期/时间和结束日期/时间?

标签: sql sql-server sql-server-2008 sql-server-2005


【解决方案1】:
SELECT
  START_SHIFT,
  END_SHIFT,
  DATE,
  DATEADD(SS,
          DATEDIFF(SS,0,START_SHIFT),
          DATEADD(D,
                  CASE WHEN START_SHIFT >= '22:00' THEN -1 ELSE 0 END,
                  DATE)) START_SHIFT_DT_TIME,
  DATEADD(SS,
          DATEDIFF(SS,0,END_SHIFT),
          DATE) END_SHIFT_DT_TIME
FROM TBL

最后一列使用的模式是将END_SHIFT中的时间分量转换为秒,然后添加到DATE中。在第 4 列中,使用相同的模式,当START_SHIFT 为 22:00 或更晚时,它会额外添加 -1 天(前一天)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 2018-10-28
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多