将时间戳值转换为AM / PM格式?

时间:2015-10-11 07:35:13

标签: sql sql-server database

我有以下格式的时间戳值: 20151010165727812

我想把它转换成像这样的10:00:0 AM ??

如何在T-SQL中执行此操作?

1 个答案:

答案 0 :(得分:0)

看起来“时间戳”表示时间为4:57:27.812 PM

即。它代表这个日期和时间2015-10-10T16:57:27.812

假设数据保存为字符串,则:

SQL Fiddle

MS SQL Server 2014架构设置

查询1

declare @somestring as varchar(17) = '20151010165727812'

select 
  format(
        convert(datetime,
            left(@somestring,8)
          + ' '    
          + substring(@somestring,9,2)
          + ':'
          + substring(@somestring,11,2)
          + ':'
          + substring(@somestring,13,2)
          , 121)
      , 'h:mm tt')    

逻辑。

  • 该字符串需要CONVERT()函数的其他字符 可靠地运作
  • 所以,分解字符串并添加它们看起来像的字符 这个                 2015-10-10 16:57:27
  • 然后,将字符串转换为日期时间值(不是字符串!)
  • 然后,使用FORMAT()函数将输出控制为h:mm tt (小时上午/下午)

<强> Results

|         |
|---------|
| 4:57 PM |

另见: http://www.sql-server-helper.com/sql-server-2012/format-function-vs-convert-function.aspx