将Time DataType转换为AM PM格式:

the*_*van 53 sql-server time select sql-server-2008

我有一个表有两个字段,如"StartTime"和"EndTime".两列的DataType是Time.

因此表的值如下所示:

TableA:

            StartTime                EndTime
       ------------------         ----------------
        17:30:00.0000000          17:57:00.0000000
Run Code Online (Sandbox Code Playgroud)

但我需要结果

            StartTime                EndTime
       ------------------         ----------------
            05:30 PM                 05:57 PM
Run Code Online (Sandbox Code Playgroud)

当我选择表格时.如何在AM PM格式中获得时间?

小智 72

在SQL 2012中,您可以使用Format()函数.

https://technet.microsoft.com/en-us/library/hh213505%28v=sql.110%29.aspx

如果列类型为(datetime),则跳过转换.

例:

SELECT FORMAT(StartTime,'hh:mm tt') AS StartTime
FROM TableA
Run Code Online (Sandbox Code Playgroud)


Rom*_*ain 68

使用以下语法将时间转换为AM PM格式.

将字段名称替换为以下查询中的值.

select CONVERT(varchar(15),CAST('17:30:00.0000000' AS TIME),100)
Run Code Online (Sandbox Code Playgroud)

  • 我们如何在分钟和上午/下午之间添加空格? (2认同)
  • 它不漂亮,但这里有一种方法可以添加空格:SELECT REPLACE(REPLACE(CONVERT(varchar(15),CAST('17:30:00.0000000'AS TIME),100),'P','P') ,'A','A') (2认同)

Mik*_*Vee 12

以下是您可以采用的各种方式(取决于您的需求).

使用时间数据类型:

DECLARE @Time Time = '15:04:46.217'
SELECT --'3:04PM'
       CONVERT(VarChar(7), @Time, 0),

       --' 3:04PM' --Leading Space.
       RIGHT(' ' + CONVERT(VarChar(7), @Time, 0), 7),

       --' 3:04 PM' --Space before AM/PM.
       STUFF(RIGHT(' ' + CONVERT(VarChar(7), @Time, 0), 7), 6, 0, ' '),

       --'03:04 PM' --Leading Zero.  This answers the question above.
       STUFF(RIGHT('0' + CONVERT(VarChar(7), @Time, 0), 7), 6, 0, ' ')

       --'03:04 PM' --This only works in SQL Server 2012 and above.  :)
       ,FORMAT(CAST(@Time as DateTime), 'hh:mm tt')--Comment out for SS08 or less.
Run Code Online (Sandbox Code Playgroud)

使用DateTime DataType:

DECLARE @Date DateTime = '2016-03-17 15:04:46.217'
SELECT --' 3:04PM' --No space before AM/PM.
       RIGHT(CONVERT(VarChar(19), @Date, 0), 7),

       --' 3:04 PM' --Space before AM/PM.
       STUFF(RIGHT(CONVERT(VarChar(19), @Date, 0), 7), 6, 0, ' '),

       --'3:04 PM' --No Leading Space.
       LTRIM(STUFF(RIGHT(CONVERT(VarChar(19), @Date, 0), 7), 6, 0, ' ')),

       --'03:04 PM' --Leading Zero.
       STUFF(REPLACE(RIGHT(CONVERT(VarChar(19), @Date, 0), 7), ' ', '0'), 6, 0, ' ')

       --'03:04 PM' --This only works in SQL Server 2012 and above.  :)
       ,FORMAT(@Date, 'hh:mm tt')--Comment line out for SS08 or less.
Run Code Online (Sandbox Code Playgroud)


小智 6

这会在上午 11:30返回

select CONVERT(VARCHAR(5), FromTime, 108) + ' ' + RIGHT(CONVERT(VARCHAR(30), FromTime, 9),2)
from tablename
Run Code Online (Sandbox Code Playgroud)

  • 这工作正常;但是你也会得到像 14:00 PM 这样的结果 (2认同)