将日期时间格式转换为12小时

时间:2012-02-07 14:15:31

标签: sql sql-server sql-server-2005

我有这个查询

select CONVERT(varchar(5), tdate ,108) AS [Time] from table 

给了我24小时格式(军事)的时间

我想将其转换为12小时格式,所以我尝试了下面的查询

 select SUBSTRING(CONVERT(VARCHAR, tdate, 100),13,2) + ':' 
+ SUBSTRING(CONVERT(VARCHAR, tdate, 100),16,2) + ''
+ SUBSTRING(CONVERT(VARCHAR, tdate, 100),18,2) AS T  
from table

我得到了12小时格式,但我很好奇是否有更短或更好的方式。有什么帮助吗?

5 个答案:

答案 0 :(得分:7)

如果您想转换当前日期时间,例如:

SELECT CONVERT(VARCHAR, getdate(), 100) AS DateTime_In_12h_Format

您可以将所需的列放在查询中(例如示例中的tdate),而不是getdate()。如果你想要12小时的时间而不是日期和时间使用substring / right来分隔它们。看来你已经知道如何=)。

This page列出了每个日期时间转换。如果您需要其他类型的转换,这非常方便。

答案 1 :(得分:6)

这将只返回时间,而不是日期。

SELECT RIGHT(CONVERT(VARCHAR, getdate(), 100), 7) AS time

对于您的表格数据:

select RIGHT(CONVERT(varchar, tdate ,100), 7) AS [Time] from table 

答案 2 :(得分:0)

以下代码将仅返回时间为晚上10:30

SELECT FORMAT(CAST(getdate() AS DATETIME),'hh:mm tt') AS [Time]  

答案 3 :(得分:0)

获取服务器日期

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7))

如果存储在表中

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), datename, 100), 7))

结果:

  

11:41 AM

答案 4 :(得分:0)

ifnull(date_format(at.date_time,'%d /%m /%Y'),“”)              AS date_time, ifnull(time_format(at.date_time,'%h:%i:%s'),“”)            AS date_time

这是sql过程的外观...(用于分隔日期和时间)..不需要特殊的时间/日期列......

注意:如果用H代替h,则会显示“ 24小时制”格式