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 是正确的行为,它是五小时。你为什么期待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

您可以执行以下操作以始终获得两位数。目前,使此类操作更容易的功能不存在。

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 回答