在 SQL 中将时间转换为 12 小时格式

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/4745527/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 08:58:59  来源:igfitidea点击:

Converting a time into 12 hour format in SQL

sqlsql-serversql-server-2008

提问by Nithesh Narayanan

How can i convert 24hour formatted time into 12hour formatted time in SQL server 2008?

如何在 SQL Server 2008 中将24小时格式的时间转换为12小时格式的时间?

回答by Damien_The_Unbeliever

Do you have the current time in a variable/column of type time? If so, it's easy:

您是否在时间类型的变量/列中有当前时间?如果是这样,这很容易:

declare @t time
set @t = '14:40'

select CONVERT(varchar(15),@t,100)

result:

结果:

2:40PM

If it's in a datetime(2)variable, then you'll have to strip out the date portion after running the CONVERT. If it's in a string, then first CONVERTit to time, then use the above code.

如果它在一个datetime(2)变量中,那么你必须在运行CONVERT去掉日期部分。如果它在一个字符串中,那么首先将CONVERT它转换为time,然后使用上面的代码。

回答by rAdmin

Sometimes you need to do it inline:

有时你需要内联:

SELECT CONVERT(varchar(15),  CAST(GETDATE() AS TIME), 100) as AmPmTime

回答by Jonny Lawrence

To add to rAdmin's comment, the syntax is:

要添加到 rAdmin 的评论中,语法为:

CONVERT(data_type,expression,style_code)

Here are some other style codes you can use:

以下是您可以使用的其他一些样式代码:

SELECT
GETDATE() AS GetDate,
CONVERT(VARCHAR,GETDATE(),0) AS '0',
CONVERT(VARCHAR,GETDATE(),100) AS '100',
CONVERT(VARCHAR,GETDATE(),1) AS '1',
CONVERT(VARCHAR,GETDATE(),101) AS '101',
CONVERT(VARCHAR,GETDATE(),7) AS '7',
CONVERT(VARCHAR,GETDATE(),107) AS '107',
CONVERT(VARCHAR,GETDATE(),108) AS '108',
CONVERT(VARCHAR,GETDATE(),108) AS '108',
CONVERT(VARCHAR,GETDATE(),10) AS '10',
CONVERT(VARCHAR,GETDATE(),110) AS '110',
CONVERT(VARCHAR,GETDATE(),12) AS '12',
CONVERT(VARCHAR,GETDATE(),112) AS '112',
CONVERT(VARCHAR,GETDATE(),14) AS '14',
CONVERT(VARCHAR,GETDATE(),114) AS '114'

Tried to post an image of the result set, but I need to "Earn more than 10 reputation to post images".

试图发布结果集的图像,但我需要“获得超过 10 个声誉才能发布图像”。

回答by Santhosh VS

Select Right(IsNull(Convert(Varchar,GetDate(),100),''),7)

回答by FARHAN KHAN

SQL can perform inline conversion for time

SQL可以对时间进行内联转换

mytime in database is 4:15:00

我在数据库中的时间是 4:15:00

SELECT CONVERT(varchar(15),  CAST(mytime AS TIME), 100) as my_time from mytable

回答by nvogel

SQL Server doesn't format the time. It's your client application that controls how the time is displayed. You should change the time format settings in your application or your code.

SQL Server 不会格式化时间。您的客户端应用程序控制着时间的显示方式。您应该更改应用程序或代码中的时间格式设置。