2

试图从日期day - hours - mins - sec的字符串条目中获取日期差异。也有时间条目AM, PM。我正在尝试使用子字符串并将其转换为日期时间,但这AM - PM使它变得困难。

我有:06-OCT-15 09.30.20.000000 AM06-OCT-15 09.45.20.000000 PM

我试图得到:0 day(s) 12 hour(s) 15 min(s) 0 sec(s)

4

3 回答 3

11

请参阅下面的 SQL Server 查询。我知道这会奏效,因为我在这方面有一些经验。

WITH CTE AS (
    SELECT CAST(
      DATEDIFF(
              DAY,
              '2015-10-06 08:00:00.00 AM',
              '2015-10-06 09:00:00.00 PM'
          ) AS 
          VARCHAR(1000)
      ) + ' day(s)' AS      Days,
      CAST(
          DATEDIFF(
              hh,
              '2015-10-06 08:00:00.00 AM',
              '2015-10-06 09:00:00.00 PM'
          ) AS VARCHAR(1000)
      ) + ' hour(s)' AS     Hours,
      CAST(
          DATEDIFF(
              mi,
              '2015-10-06 08:00:00.00 AM',
              '2015-10-06 09:00:00.00 PM'
          ) AS VARCHAR(1000)
      ) + ' min(s)' AS      Minutes,
      CAST(
          DATEDIFF(
              ss,
              '2015-10-06 08:00:00.00 AM',
              '2015-10-06 09:00:00.00 PM'
          ) AS VARCHAR(1000)
      ) + ' sec(s)' AS Seconds
)
SELECT Days + ' ' + Hours + ' ' + Minutes + ' ' + Seconds AS FullDifference
FROM   CTE
于 2015-10-06T11:04:08.043 回答
1

它可能会有所帮助 http://www.w3schools.com/sql/func_datediff.asp

获取小时数的示例,您必须更改日期字符串,例如

选择 datediff(hour,CONVERT(datetime, '06-OCT-15 09:00:00.000 AM'),'06-OCT-15 08:00:00.000 PM') 作为 DiffDate 结果:11

于 2015-10-06T11:06:57.040 回答
0

最大的问题似乎是将您的日期时间格式正确转换为 mySQL 可以使用的格式。

在这里,您将找到 mySQL 提供的执行此操作的格式选项:

www.w3schools.com/sql/func_date_format.asp

于 2015-10-06T11:10:00.643 回答