0

日時型の列があります。datepart は常に 1899-12-30 です。時間の部分が気になります。

ここではいくつかの例を示します。

Original field data:          Desired return value:
1899-12-30 07:45:00.000       7,75 or 7,45
1899-12-30 13:00:00.000       1 or 13 
1899-12-30 08:00:00.000       8
1899-12-30 13:30:00.000       13,5 or 13,30
1899-12-30 18:15:00.000       18,25  or 18,15    

目的の出力を取得するための最良の方法は何ですか?

** SQL Server 2005 を使用しています。

4

3 に答える 3

1
select  1.0 * datepart(hour, yourDateColumn) + 0.01 * datepart(minute, yourDateColumn)
from    yourTable
于 2013-02-21T09:16:14.977 に答える
0

クエリ:

SQLFIDDLE例

SELECT t.dt,
       CAST(DATEPART(hour, t.dt) AS NVARCHAR(2)) +
       CASE WHEN DATEPART(minute, t.dt) = 0 THEN ''
       ELSE ',' END + 
       CASE WHEN DATEPART(minute, t.dt) = 0 THEN ''
       ELSE CAST(DATEPART(minute, t.dt) AS NVARCHAR(2)) END AS rr
FROM Table1 t

結果:

|                              DT |    RR |
-------------------------------------------
| December, 30 1899 07:45:00+0000 |  7,45 |
| December, 30 1899 13:00:00+0000 |    13 |
| December, 30 1899 08:00:00+0000 |     8 |
| December, 30 1899 13:30:00+0000 | 13,30 |
| December, 30 1899 18:15:00+0000 | 18,15 |
于 2013-03-27T09:17:39.777 に答える
0

1 つのオプションは、DATEDIFF1899 年 12 月 31 日の真夜中からのミリ秒数を見つけるために使用し、1 時間のミリ秒数で割ることです。

SELECT DATEDIFF("ms", ColumnName, '1899-12-31 00:00:00') / 3600000.0 FROM Foo

または、データが最も近い秒までしか正確でない場合:

SELECT DATEDIFF("s", ColumnName, '1899-12-31 00:00:00') / 3600.0 FROM Foo
于 2013-02-21T09:18:49.200 に答える