2010-07-08 70 views

回答

26

一種方法是:

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

如果你看看Books Online here,格式100是具有時間要素之一按照你想要的格式,這只是一個從正面剝離日期的情況。

+3

這將打印下午8:00,但我認爲這個問題是尋找下午20:00 – Andomar 2010-07-08 09:18:20

+3

@Andomar - 好點。如果這真的是需要的話,我會認爲AM/PM是無關緊要的,並且建議使用更簡潔的方法,儘管 – AdaTheDev 2010-07-08 09:36:49

1

您需要使用CONVERT功能:

CONVERT(VARCHAR, yourdatetimefiled, 114) AS [HH:MI(12H)] 
+2

根據MSDN,114 ='hh:mi:ss:mmm(24h)'。 – Oded 2010-07-08 07:30:36

+0

但我想用HH:mm tt格式,它不提供像AM或PM這樣的tt信息 – Azhar 2010-07-08 07:32:49

+0

我之所以寫這個答案是因爲我目前沒有MSSQL訪問權限。我相信AdaTheDev是對的。 – Anax 2010-07-08 07:42:41

0
select right(convert(char(20),getdate(),0),7) 

不檢查雖然

9

你需要兩個轉換,一個得到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。

+0

我會用一個DatePart()和Case-Statement取代SubString()和Convert()。這也將使您更好地控制AM/PM的套數/大寫。即(當時的情況(HOUR,GETDATE())<12 THEN'am'ELSE'pm'END)你也可以在'am'和'pm'中包含空格,所以你也可以少一個連接。 – MikeTeeVee 2013-06-04 20:42:50

2

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 
1
select cast(getdate() as time)) [time], 
+0

答案不完整。編輯更有趣! – SoftDev 2013-06-07 11:20:18

+0

SQL Sevrer 2005不支持'Time'類型,所以這個答案是完全錯誤的。 – 2017-01-26 08:13:24

2
select substring(CONVERT(VARCHAR, getdate(), 114),1,5) 

resault:22:05

1

這給你一個實際的日期時間,而不是爲varchar

CAST(LEFT(YOURDATETIME,12) AS SMALLDATETIME) AS YOURNEWDATE 
相關問題