Como obter o tempo do formato DateTime no SQL?

182

Desejo obter apenas o tempo da coluna DateTime usando a consulta SQL usando o SQL Server 2005 e 2008 Saída padrão:

AttDate                   
==
2011-02-09 13:09:00    
2011-02-09 14:10:00    

Eu gostaria desta saída:

AttDate                Time 
==
2011-02-09 13:09:00    13:09
2011-02-09 14:10:00    14:10
Jig12
fonte
procure pelo método to_char no sql. você pode especificar o formato e obter o resultado desejado
Naveen Babu
1
Selecione converter (varchar (10), getdate (), 108)
rahularyansharma 10/10
Pode ser SELECT CONVERT(VARCHAR(8),GETDATE(),108)para servidor sql
V4Vendetta 10/10

Respostas:

342

SQL Server 2008:

SELECT cast(AttDate as time) [time]
FROM yourtable

Versões recentes:

SELECT convert(char(5), AttDate, 108) [time]
FROM yourtable
t-clausen.dk
fonte
34

Assumindo servidor SQL

SELECT CONVERT(VARCHAR(8),GETDATE(),108)

V4Vendetta
fonte
Funciona apenas em getdate () onde, como quando passo em select convert (varchar (8), '2011-02-09 13: 09: 00', 108), está produzindo os primeiros 8 caracteres a partir da data. Como corrigir isso ?
Aparna
24

O SQL Server 2008+ possui um tipo de dados "tempo"

SELECT 
    ..., CAST(MyDateTimeCol AS time)
FROM
   ...

Para versões mais antigas, sem conversões varchar

SELECT 
    ..., DATEADD(dd, DATEDIFF(dd, MyDateTimeCol, 0), MyDateTimeCol)
FROM
   ...
gbn
fonte
por que você não usa este SELECT CONVERT (VARCHAR (8), GETDATE (), 108) AS HourMinuteSecond, CONVERT (VARCHAR (8), GETDATE (), 101) AS DateOnly há algum problema de desempenho?
Rahularyansharma 10/10
2
@rahularyansharma: Eu não uso a conversão varchar para datas, se necessário
gbn 10/10
senhor, eu quero saber se há alguma queda no desempenho se usarmos isso em vez da sua solução?
Rahularyansharma 10/10
1
@rahularyansharma: você pode testar a si mesmo com base neste stackoverflow.com/questions/133081/…
gbn
1
Para quem não segue, 0representa a data mínima 1900-01-01. Portanto, isso obtém o número (negativo) de dias entre o valor da coluna e 0 e, em seguida, adiciona esses dias negativos ao valor da coluna que "zera" a parte da data 1900-01-01e você fica apenas com a hora.
Xr280xr 13/10/2015
13

A maneira mais simples de obter o tempo da data e hora sem a pilha de milissegundos é:

SELECT convert(time(0),getDate())
Paizão
fonte
10

Tente usar este

  • Data e Hora

    select cast(getdate() as time(0))
  • Hora de TinyTime

    select cast(orig_time as time(0))
Cantarero
fonte
5

Tente o seguinte:

select  convert(nvarchar,CAST(getdate()as time),100)
Balaji N
fonte
5

Tente isso, ele funcionará:

CONVERT(VARCHAR(8),DATETIME,114)

Para sua referência .

user8498521
fonte
3

select AttDate,convert(char(5), AttDate, 108) [Time] from yourTableName

sagar Shah
fonte
3
select cast (as time(0))

seria uma boa cláusula. Por exemplo:

(select cast(start_date as time(0))) AS 'START TIME'
Metin Özsoy
fonte
3

Costumo usar esse script para obter tempo de DateTime:

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE
ChinoNoypi
fonte
por que obtenho 9 na frente do Time .. Resultado: 9 23:21
Sayed Muhammad Idrees
2

Para obter o horário da data e hora, podemos usar

SELECT CONVERT(VARCHAR(20), GETDATE(), 114)
a van
fonte
2

Se você quiser namorar algo com este estilo: 23 de outubro de 2013 às 10:30

Usa isto

SELECT CONVERT(NVARCHAR(30),getdate(), 100)

convert() método leva 3 parâmetros

  1. tipo de dados
  2. Coluna / Valor
  3. Estilo: os estilos disponíveis são de 100 a 114. Você pode escolher entre o intervalo. Escolha um por um para alterar o formato da data.
Arif Ansari
fonte
2

Obter data do servidor

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), GETDATE(), 100), 7)) FROM TABLENAME WHERE ...

ou

Se estiver armazenado na tabela

SELECT LTRIM(RIGHT(CONVERT(VARCHAR(20), datename, 100), 7)) FROM TABLENAME WHERE ...

Resultado:

11:41

Luis Gerardo López Salazar
fonte
1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking
JIYAUL MUSTAPHA
fonte
1

no MSSQL2012 ou superior

cast(dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) as Time(0))

...ou...

convert(time(0),dateadd(ms,datediff(ms, [StartDateTime], [StopDateTime]),0) )
aVB.NetCoder
fonte
1

SQL Server 2012:

Select TRY_CONVERT(TIME, myDateTimeColumn) from myTable;

Pessoalmente, prefiro TRY_CONVERT () a CONVERT (). A principal diferença: Se a conversão falhar, TRY_CONVERT () retornará NULL enquanto CONVERT () gera um erro.

jinhr
fonte
-1

select substr(to_char(colUmn_name, 'DD/MM/RRRR HH:MM:SS'),11,19) from table_name;

Saída: de

05:11:26
05:11:24
05:11:24
user7131338
fonte
Não funciona com erro'to_char' is not a recognized built-in function name.
captainsac