在 Azure Analytics 作业中格式化日期时间

Formatting a Datetime in an Azure Analytics job

我需要将时间戳作为一列插入到 Azure Table 中,格式为 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

提前致谢

我不确定我是否理解问题。 datepart(hh,'2015-10-12T05:17:37.807Z') = 5 是正确的行为,现在是五点钟。你为什么期待17? datepart(hh) returns 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

您可以执行如下操作以始终获得两位数。目前还没有简化此类操作的功能。

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