Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Converter data e hora no servidor sql

Para obter "25 de outubro de 2010"


Supondo que o valor seja fornecido como uma string, não como um tipo de dados DATETIME:
SELECT REPLACE(CONVERT(VARCHAR, CAST('2010-10-25 11:13:36.700' AS DATETIME), 106), ' ', '-')

Consulte a documentação CAST/CONVERT para outros formatos, embora o que você solicitou exija pós-processamento.

Para obter "2010-10-25 00:00:00.000"


O meio de melhor desempenho é usar DATEADD &DATEDIFF:
SELECT DATEADD(d, DATEDIFF(dd, 0, '2010-10-25 11:13:36.700'), 0)

Referências:

Teste

WITH sample AS (
   SELECT CAST('2010-10-25 11:13:36.700' AS DATETIME) dt)
SELECT REPLACE(CONVERT(VARCHAR, s.dt, 106), ' ', '-') AS col1,
       DATEADD(d, DATEDIFF(dd, 0, s.dt), 0) AS col2
  FROM sample s

Devoluções:
col1          col2
-------------------------------------
25-Oct-2010   2010-10-25 00:00:00.000

Adendo


Sendo que você está no SQL Server 2005, você pode tornar a formatação de data mais fácil para você criando uma função SQLCLR que permitiria usar a formatação de data .NET.