繁体   English   中英

如何从日期时间格式的字段中显示AM或PM的时间?

[英]How do i show just the time with AM or PM from a field that is a datetime format?

我在SQL中有一列数据,当前采用日期时间格式。 如果需要,可以更改它。 我需要只显示一天中的时间,到十分之一秒,同时连接AM或PM。 我不希望在这个例子中显示日期。

因此,作为一个例子,我需要'11:45:59.8 AM'而不是'1900-01-01 11:45:59.800'。
此外,这不是当前的“getdate”时间。 它来自我称之为“时间”的数据领域,我在网上看到了各种各样的转换格式,但没有人会为我提供这些。

谢谢!!!!

在我的评论中,我建议你不要这样做。

SQL Server是一个数据存储的地方,为了显示目的而转换数据通常会模糊可能会让您困扰的线条。 (一个例子;如果你将来的那个时间作为一个时间在未来的其他地方怎么办。你要再从一个字符串转换回来吗?)

如果它是必要的,那么你必须自己做一些格式化。

SELECT
  RIGHT(CONVERT(VARCHAR(26), GETDATE(), 109), 14)

或者,更麻烦......

SELECT
  DATEPART(HOUR, GETDATE()) + ':' +
  DATEPART(MINUTE, GETDATE()) + ':' +
  DATEPART(SECOND, GETDATE()) + '.' +
  DATEPART(MILLISECOND, GETDATE()) +
  CASE WHEN DATEPART(HOUR, GETDATE()) < 12 THEN 'AM' ELSE 'PM' END


我说了吗? 你最好在客户端做这件事;)

重命名您的表字段, Time是一个保留字,维护是一件痛苦的事。 如果您想要毫秒精度,请确保使用新的datetime2数据类型。

要格式化时间部分使用:

SELECT CONVERT(TIME, [Time]) FROM [Your Table]

如果您只想在这段时间后使用三位数,您可以使用:

SELECT CONVERT(TIME(3), [Time]) FROM [Your Table] 

我想如果您想要使用HH:MM格式,这将有效

SELECT
  RIGHT(CONVERT(VARCHAR(26), GETDATE(), 117), 14)

您还可以参考此页面以获取更多格式

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.infocenter.dc36271.1570/html/blocks/X41864.htm

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM