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

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

34

Assumindo servidor SQL

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


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
   ...

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())

10

Tente usar este

  • Data e Hora

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

    select cast(orig_time as time(0))

5

Tente o seguinte:

select  convert(nvarchar,CAST(getdate()as time),100)


3

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


3
select cast (as time(0))

seria uma boa cláusula. Por exemplo:

(select cast(start_date as time(0))) AS 'START TIME'

3

Costumo usar esse script para obter tempo de DateTime:

SELECT CONVERT(VARCHAR(9),RIGHT(YOURCOLUMN_DATETIME,9),108) FROM YOURTABLE

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)

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.

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


1
select convert(char(5), tbl_CustomerBooking.CheckInTime, 108) AS [time]
from tbl_CustomerBooking

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) )

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.


-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

Não funciona com erro'to_char' is not a recognized built-in function name.
captainsac
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.