1

タイムスタンプを Azure テーブルの列として次の形式で挿入する必要がありますyyyy-MM-dd-HH-mm

プレーンな T-SQL では、次のようにします。

SELECT FORMAT( GETDATE(), 'yyyy-MM-dd-HH-mm' ) AS 'PK' 

CONCAT および DATENAME/DATEPART 関数が役立つと思い、最終的にこれになりましたが、必要な出力が生成されません。

CONCAT(DATENAME(yyyy,System.Timestamp),'-',CAST(DATEPART(mm,System.Timestamp) AS NVARCHAR(MAX)),'-',DATENAME(dd,System.Timestamp),'-',CAST(DATEPART(hh,System.Timestamp)  AS NVARCHAR(MAX)),'-',DATENAME(mi,System.Timestamp))

2015-10-12T05:17:37.807Zのようにフォーマットされており2015-10-12-5-17、私は期待しています2015-10-12-17-17

前もって感謝します

4

1 に答える 1

3

質問を理解しているかどうかわかりません。datepart(hh,'2015-10-12T05:17:37.807Z') = 5 は正しい動作です。5 時間です。なぜ17を期待するのですか?datepart(hh) は、時間を 24 時間形式で返します。以下のクエリは、24 時間形式の動作を示しています

select
    DATENAME(hh,'2015-10-12T05:17:37.807Z') HourFive,
    DATENAME(hh,'2015-10-12T17:17:37.807Z') HourSeventeen
from
foo

出力

5 17

以下のようにして、常に 2 桁を取得できます。現時点では、この種の操作を簡単にする機能はありません。

with T1 as
(
select
    datepart(hh,'2015-10-12T05:17:37.807Z') [Hour]
from
foo
)

select 
  case when [Hour] <10 then concat('0',cast([Hour] as nvarchar(max))) else cast([Hour] as nvarchar(max)) end [Hour]
from 
  T1
于 2015-10-12T17:34:04.917 に答える