Converter o formato da data para o formato DD/MMM/AAAA no servidor SQL
tenho uma consulta em sql, tenho de arranjar data num formato de dd/mmm/yy
Exemplo: 25/jun/2013
.
8 answers
convert()
e estilo 106
. Em seguida, substitua os espaços:
SELECT replace(convert(NVARCHAR, getdate(), 106), ' ', '/')
Já existem múltiplas respostas e tipos de formatação para o SQL server 2008. Mas este método é um pouco ambíguo e seria difícil para você lembrar o número em relação ao formato de data específica. É por isso que nas próximas versões do servidor SQL há uma melhor opção.
Se estiver a usar o SQL Server 2012 ou versões acima, deve usar o formato () função
FORMAT ( value, format [, culture ] )
Com a opção cultura, pode indicar a data de acordo com a sua evento.
DECLARE @d DATETIME = '10/01/2011';
SELECT FORMAT ( @d, 'd', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'd', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'd', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'd', 'zh-cn' ) AS 'Simplified Chinese (PRC) Result';
SELECT FORMAT ( @d, 'D', 'en-US' ) AS 'US English Result'
,FORMAT ( @d, 'D', 'en-gb' ) AS 'Great Britain English Result'
,FORMAT ( @d, 'D', 'de-de' ) AS 'German Result'
,FORMAT ( @d, 'D', 'zh-cn' ) AS 'Chinese (Simplified PRC) Result';
US English Result Great Britain English Result German Result Simplified Chinese (PRC) Result
---------------- ----------------------------- ------------- -------------------------------------
10/1/2011 01/10/2011 01.10.2011 2011/10/1
US English Result Great Britain English Result German Result Chinese (Simplified PRC) Result
---------------------------- ----------------------------- ----------------------------- ---------------------------------------
Saturday, October 01, 2011 01 October 2011 Samstag, 1. Oktober 2011 2011年10月1日
Para a solução do OP, podemos usar o seguinte formato, que já é mencionado por @Martin Smith:
FORMAT(GETDATE(), 'dd/MMM/yyyy', 'en-us')
Alguns formatos de data de amostragem:
Se quiser mais formatos de data do servidor SQL, deverá visitar:
Podemos converter a data em muitos formatos como
SELECT convert(varchar, getdate(), 106)
Isto devolve dd mon yyyy
Tente usar a consulta abaixo.
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),6), ' ','/');
Resultado: 20 / Jun / 13
SELECT REPLACE(CONVERT(VARCHAR(11),GETDATE(),106), ' ','/');
Resultado: 20 / Junho / 2013
A resposta aceite já dá a melhor solução usando métodos de formatação construídos em 2008.
Note-se que os resultados devolvidos dependem do idioma do login.
SET language Russian
SELECT replace(CONVERT(NVARCHAR, getdate(), 106), ' ', '/')
O Devolve
06/апр/2015
No momento da escrita.
Para as pessoas que se deparam com esta questão em versões mais recentes do servidor SQL um método que evita este problema-e a necessidade de REPLACE
é
FORMAT(GETDATE(),'dd/MMM/yyyy', 'en-us')
On 2005+ it would be possible to write a CLR UDF que aceitou um DateTime, padrão de formatação e cultura para simular o mesmo.
select convert(varchar,getdate(),100)
O terceiro parâmetro é o formato, o intervalo é de 100
a 114
, Qualquer um deve trabalhar para si.
Se precisar de data em dd/mmm/yyyy
use isto:
replace(convert(char(11),getdate(),113),' ','-')
Substituir getdate()
pelo nome da sua coluna. Isto funcionou comigo.
Tenta isto:
select replace ( convert(varchar,getdate(),106),' ','/')
Qualquer pessoa que tente introduzir manualmente a data na variável 'date type' do servidor sql use este formato ao introduzir:
'yyyy-mm-dd'