2011-01-20 268 views
7

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

+1

为什么不把它转换的代码,而不是分贝? – 2011-01-20 09:48:05

+0

@OrWeinberger,我们不确定是否有其他代码,因为这个问题只提到SQL,也许它可能是一个报告。 – kd7iwp 2017-08-25 23:15:08

回答

19

你有当前时间在变量/类型的时间列吗?如果是的话,很容易:

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

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

结果:

2:40PM 

如果是在datetime(2)变量,那么你就必须运行CONVERT之后剥离出来的日期部分。如果它在一个字符串中,那么首先CONVERT它到time,然后使用上面的代码。

+0

为什么要将时间转换为字符串?在大多数情况下,这可能不是一个好主意。 – sqlvogel 2011-01-20 10:17:22

+3

@dportas - 如果它正在进入客户端应用程序,那么我同意,让应用程序执行格式化会更好。另一方面,如果它是定义(例如)导出到CSV文件的查询(以及任何想要此CSV的骨头系统想要AM/PM而不是ISO格式的日期时间值),那么我不会看到伤害。由于我们关心格式,我们必须转换为字符串。 – 2011-01-20 10:21:09

0

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

6

有时你需要内嵌做到这一点:

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

为了增加RADMIN的评论,语法是:

CONVERT(data_type,expression,style_code) 

这里有一些其他风格的代码,你可以使用:

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' 

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

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

SQL可以执行的时间内联转换数据库

指明MyTime对应的四点15分00秒

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