如何更改查询中的日期时间格式?

How to change datetime format in query?

我的日期时间列采用 YYYYMMDDHHmmss 格式。 Grafana 的数据源是 SQL Server 2014,具有只读访问权限(TRIM() 无效)。

如何使用 Grafana 时间过滤器选项过滤查询中的结果? 我想使用 $__timeFrom()$__timeTo(),但 Grafana 使用 2022-01-21T06:29:28Z 格式或 unixepoch。

我的查询需要转换: 2022-01-21T06:29:28Z -> 20220121062928

[编辑] 尝试 1(有效):

 WHERE s.zeitpunkt 
  BETWEEN 
   CAST(REPLACE(REPLACE(REPLACE(REPLACE($__timeFrom(), '-', ''), 'T', ''), ':', ''), 'Z', '') AS VARCHAR(25))
    AND CAST(REPLACE(REPLACE(REPLACE(REPLACE($__timeTo(), '-', ''), 'T', ''), ':', ''), 'Z', '') AS VARCHAR(25))

尝试 2(无效):

WHERE s.zeitpunkt
  BETWEEN CONCAT(
            CONVERT(varchar, $__timeFrom(), 112) 
            , REPLACE(CONVERT(varchar, $__timeFrom(),108),':','')
            )
    AND CONCAT(
            CONVERT(varchar, $__timeTo(), 112) 
            , REPLACE(CONVERT(varchar, $__timeTo(),108),':','')
            )

如果您在使用 sql 服务器的日期格式时遇到问题,您可以执行多种操作来更改日期格式。例如 SSMS 和 SQL 服务器日期格式由您设置的语言和区域决定

您可以使用 CAST(),CONVERT() 更改日期格式或从 ssms 设置格式。

你可以关注这个linkDate and Time Format in SQL

  • 对于 datetimedatetime 具有不同的格式

    set language 'British'

    cast(convert(varchar, getdate(), 103) as datetime)

这会将 2022-01-24 00:38:54.840 更改为 24/01/2022

这终于奏效了: 我投射日期时间并使用 FORMAT() 和自定义格式。我试过的其他解决方案有点慢。

WHERE s.zeitpunkt
  BETWEEN 
    CAST( 
        FORMAT(CAST($__timeFrom() AS DATETIME),'yyyyMMddHHmmss')
      AS VARCHAR)
    AND CAST(
        FORMAT(CAST($__timeTo() AS DATETIME),'yyyyMMddHHmmss')
      AS VARCHAR)