【发布时间】:2011-03-13 04:48:31
【问题描述】:
如何以HH:mm tt 格式从 SQL Server 2005 日期时间获取时间部分
例如
11:25 AM
14:36 PM
【问题讨论】:
-
你为什么需要 HH:mm 格式的 AM/PM?
-
看起来在您的应用程序代码中更容易实现。
标签: sql tsql sql-server-2005 time
如何以HH:mm tt 格式从 SQL Server 2005 日期时间获取时间部分
例如
11:25 AM
14:36 PM
【问题讨论】:
标签: sql tsql sql-server-2005 time
一种方法是:
SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7))
如果您查看Books Online here,格式 100 是具有您想要的格式的时间元素的格式,这只是从前面剥离日期的情况。
【讨论】:
您需要两个转换,一个用于获取 HH:mm 时间,另一个用于获取 AM/PM。例如:
declare @date datetime
set @date = '20:01'
SELECT CONVERT(VARCHAR(5), @date, 108) + ' ' +
SUBSTRING(CONVERT(VARCHAR(19), @date, 100),18,2)
打印出来:
20:01 PM
在选择查询中,将@date 替换为您的列名。
【讨论】:
SQL Server 2008
SELECT
CONVERT(TIME,GETDATE()) AS HourMinuteSecond,
CONVERT(DATE,GETDATE(),101) AS DateOnly
GO
结果
HourMinuteSecond: 13:06:56.5770000
DateOnly: 2012-07-26
SQL Server 2000/2005
SELECT
CONVERT(VARCHAR(8),GETDATE(),108) AS HourMinuteSecond,
CONVERT(VARCHAR(8),GETDATE(),101) AS DateOnly
GO
【讨论】:
SQL Server 2008
SELECT
CONVERT(TIME,GETDATE()) AS HourMinuteSecond,
CONVERT(DATE,GETDATE(),101) AS DateOnly
GO
结果:
HourMinuteSecond: 13:06:56.5770000
DateOnly: 2012-07-26
SQL Server 2000/2005
SELECT
CONVERT(VARCHAR(8),GETDATE(),108) AS HourMinuteSecond,
CONVERT(VARCHAR(8),GETDATE(),101) AS DateOnly
GO
【讨论】:
select substring(CONVERT(VARCHAR, getdate(), 114),1,5)
结果:22:05
【讨论】:
你需要使用CONVERT函数:
CONVERT(VARCHAR, yourdatetimefiled, 114) AS [HH:MI(12H)]
【讨论】:
hh:mi:ss:mmm(24h)。
select cast(getdate() as time)) [time],
【讨论】:
Time 类型,所以这个答案是完全错误的。
这会给你一个实际的日期时间而不是 varchar
CAST(LEFT(YOURDATETIME,12) AS SMALLDATETIME) AS YOURNEWDATE
【讨论】:
select right(convert(char(20),getdate(),0),7)
没有检查
【讨论】:
对于 SQL Server 2012 及更高版本,请使用:
SELECT Format(GetDate(), 'hh:mm tt')
【讨论】: