2010-07-08 16 views

Respuesta

26

Una forma es:

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

Si usted tiene un vistazo a Books Online here, formato 100 es el que tiene el elemento de tiempo en el formato que desea, solo se trata de quitar la fecha desde el frente.

+3

Esto imprimirá 8:00 PM, pero creo que la pregunta está buscando a las 20:00 PM – Andomar

+3

@Andomar - buen punto. Si eso es realmente lo que se necesita, yo diría que el AM/PM es irrelevante y sugiero un enfoque más conciso aunque – AdaTheDev

1

Es necesario utilizar CONVERT función:

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

Según MSDN, 114 = 'hh: mi: ss: mmm (24h)'. – Oded

+0

pero quiero en formato HH: mm tt y no proporciona información de tt como AM o PM – Azhar

+0

Escribí la respuesta de memoria ya que no tengo acceso a MSSQL en este momento. Creo que AdaTheDev lo hizo bien. – Anax

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

Sin embargo cheque

9

Tendrá dos conversos, uno para obtener la HH: mm tiempo, y uno para conseguir AM/PM. Por ejemplo:

declare @date datetime 
set @date = '20:01' 
SELECT CONVERT(VARCHAR(5), @date, 108) + ' ' + 
     SUBSTRING(CONVERT(VARCHAR(19), @date, 100),18,2) 

Esta impresora:

20:01 PM 

En una consulta de selección, vuelva a colocar @date con el nombre de su columna.

+0

Reemplazaría el SubString() y Convert() con un solo DatePart() y Case-Statement. Esto también le dará un mayor control sobre la carcasa/mayúsculas de su AM/PM. es decir (CASE WHAT DATEPART (HOUR, GETDATE()) <12 THEN 'am' ELSE 'pm' END) También puede incluir el espacio en 'am' y 'pm' para que tenga una concatenación menos también. – MikeTeeVee

2

SQL Server 2008

SELECT 
CONVERT(TIME,GETDATE()) AS HourMinuteSecond, 
CONVERT(DATE,GETDATE(),101) AS DateOnly 
GO 

Resultado:

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

La respuesta es incompleta. ¡La edición es aún más interesante! – SoftDev

+0

SQL Sevrer 2005 no admite el tipo 'Time', por lo que esta respuesta es totalmente falsa. –

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

resault: 22:05

1

Esto le da una fecha y hora real y no varchar

CAST(LEFT(YOURDATETIME,12) AS SMALLDATETIME) AS YOURNEWDATE 
Cuestiones relacionadas