Estou trabalhando em uma consulta no Sql Server 2005 em que preciso converter um valor em DateTime
variável em uma varchar
variável em yyyy-mm-dd
formato (sem parte do tempo). Como faço isso?
sql
sql-server
datetime
sql-convert
Todos
fonte
fonte
CONVERT
, consulte a documentação do MSDN .Respostas:
Com o Microsoft Sql Server:
fonte
LEFT(.., 10)
vez deCONVERT(CHAR(10), ...)
? Além disso, aqueles que trabalham com as versões mais recentes do SQL Server que 2005 (!) Devem verificar a resposta de Zar Shardan, sugerindo uma solução baseada naFORMAT(date_value, format_string)
função.FORMAT()
é relativo muito lento paraconvert(char(10),...)
Aqui estão alguns sql de teste para todos os estilos.
Aqui está o resultado
Faça
nvarchar(max)
mais curto para aparar o tempo. Por exemplo:saídas:
fonte
dd-mm
oujun - 28
. Existe alguma opção ??Tente o seguinte:
Por um período de data completo e não apenas por data, faça:
Veja esta página para estilos de conversão:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
OU função
SQL Server CONVERT ()
fonte
O SQL Server 2012 tem uma nova função, FORMAT: http://msdn.microsoft.com/en-us/library/ee634924.aspx
e você pode usar seqüências de caracteres de formato de data e hora personalizadas: http://msdn.microsoft.com/en-us/library/ee634398.aspx
Essas páginas sugerem que também está disponível no SQL2008R2, mas não tenho uma útil para testar se esse é o caso.
Exemplo de uso (data e hora australiana):
fonte
Você pode usar
DATEPART(DATEPART, VARIABLE)
. Por exemplo:fonte
De qualquer
Cast
ouConvert
:Sintaxe para
CAST
:Sintaxe para
CONVERT
:http://msdn.microsoft.com/en-us/library/ms187928.aspx
Na verdade, desde que você solicitou um formato específico:
fonte
- Isso fornece o tempo como 0 no formato 'aaaa-mm-dd 00: 00: 00.000'
fonte
Com o Microsoft SQL Server:
Use a sintaxe para o CONVERT:
Exemplo:
Para o estilo, você pode encontrar mais informações aqui: MSDN - Transmitir e converter (Transact-SQL) .
fonte
Experimentar:
Mais sobre dicas ms sql
fonte
Tente o seguinte:
Então você precisaria substituir o "." com "-".
Aqui está um site que ajuda http://www.mssqltips.com/tip.asp?tip=1145
fonte
Eu fixei o comprimento dos dados
char(10)
conforme você deseja um formato de string específico.fonte
O OP mencionou o formato de data e hora . Para mim, a parte do tempo atrapalha.
Eu acho que é um pouco mais limpo remover a parte do tempo (lançando data / hora até a data) antes da formatação.
fonte
É assim que eu faço:
CONVERT(NVARCHAR(10), DATE1, 103) )
fonte
Você pode converter sua data em vários formatos, a sintaxe é simples de usar:
No seu caso , eu acabei de converter e restringir o tamanho por nvarchar (10) assim:
Veja mais em: http://www.w3schools.com/sql/func_convert.asp
Outra solução (se a sua data é uma data e hora) é um CAST simples :
fonte
Experimente este SQL:
fonte
Para SQL Server 2008+, você pode usar CONVERT e FORMAT juntos.
Por exemplo, para carimbo de data / hora de estilo europeu (por exemplo, Alemanha):
fonte
Você não disse qual banco de dados, mas com o mysql aqui é uma maneira fácil de obter uma data com um carimbo de data / hora (e a conversão do tipo varchar deve ocorrer automaticamente):
fonte
A maneira mais curta e mais simples é:
fonte
fonte
fonte
Escreva uma função
fonte
vai dar
05/05/2020 10:41:05 AM
como resultadofonte
Você não diz qual idioma, mas suponho
C#/.NET
que ele tenha umDateTime
tipo de dados nativo . Nesse caso, basta convertê-lo usando oToString
método e use um especificador de formato como:No entanto, eu recomendaria não usar isso em uma consulta ao banco de dados ou concatenado em uma instrução SQL. Os bancos de dados exigem que uma seqüência de formatação específica seja usada. É melhor zerar a parte do tempo e usar o DateTime como um parâmetro SQL, se é isso que você está tentando realizar.
fonte