我在SQL中有一列当前采用日期时间格式的数据。如果需要,可以更改它。我需要只显示一天中的时间,到十分之一秒,同时连接AM或PM。我不希望在这个例子中显示日期。
所以不要以'1900-01-01 11:45:59.800'为例,我需要'11:45:59.8 AM'。
此外,这不是当前的“getdate”时间。它来自我称之为“时间”的数据领域
我在网上看到了各种各样的转换格式,但没有人会为我提供这种格式。
谢谢!!!!
答案 0 :(得分:8)
在我的评论中,我建议你不要这样做。
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
我说了吗?你最好在客户端做这件事;)
答案 1 :(得分:1)
重命名您的表格字段,Time
是一个保留字,维护起来很痛苦。如果您想要毫秒精度,请确保使用新的datetime2
数据类型。
格式化时间部分:
SELECT CONVERT(TIME, [Time]) FROM [Your Table]
如果您只想在可以使用的时间段后输入三位数字:
SELECT CONVERT(TIME(3), [Time]) FROM [Your Table]
答案 2 :(得分:-1)
我认为,如果您要使用HH:MM格式,这会起作用
SELECT
RIGHT(CONVERT(VARCHAR(26), GETDATE(), 117), 14)
您也可以参考此页面以获取更多格式