Estou surpreso por ainda não conseguir encontrar essa pergunta aqui.
Eu tenho uma data e hora var e quero convertê-la em uma string para poder anexá-la a outra string. Eu quero um formato que possa ser facilmente convertido de volta para uma data e hora.
Como posso fazer isso?
(Eu quero a parte da data e a parte da hora.)
sql-server
tsql
cja
fonte
fonte
Convert
, clique duas vezes para destacar, pressione Shift + F1 ... sempre a primeira linha de defesa.Respostas:
A consulta a seguir obterá a data e hora atual e converterá em string. com o seguinte formato
yyyy-mm-dd hh:mm:ss(24h)
fonte
DateTimeOffSet
, certifique-se de ajustar ovarchar
comprimento de acordo com a aparência desejada para o resultado. Para mim, eu não queria o fuso horário, então tive que usarSELECT convert(varchar(19), sysdatetimeoffset(), 120)
Existem muitas maneiras diferentes de
convert
umdatetime
para um string. Aqui está uma maneira:Veja a demonstração
Aqui está um site que contém uma lista de todas as conversões:
Como formatar data e hora no SQL Server
fonte
Você pode usar a
convert
instrução no Microsoft SQL Server para converter uma data em uma string. Um exemplo da sintaxe usada seria:O código acima retornaria a data e hora atuais em uma string com o formato de
YYYY-MM-DD HH:MM:SS
relógio de 24 horas.Você pode alterar o número no final da instrução para um de muitos que irão alterar o formato das strings retornadas. Uma lista desses códigos pode ser encontrada no MSDN na seção de referência CAST e CONVERT .
fonte
Existem 3 métodos diferentes, dependendo de qual é a minha necessidade e da versão que estou usando.
Aqui estão os métodos ..
1) Usando Converter
2) Usando Cast (SQL Server 2008 e além)
3) Usando tipo de dados de caractere de comprimento fixo
fonte
Além das funções
CAST
eCONVERT
nas respostas anteriores, se você estiver usando o SQL Server 2012 e superior, use a função FORMAT para converter umDATETIME
tipo baseado em uma string.Para converter de volta, use as funções opostas
PARSE
ouTRYPARSE
.Os estilos de formatação são baseados em .NET (semelhante às opções de formatação de string do método ToString ()) e tem a vantagem de reconhecer a cultura. por exemplo.
Resultados:
fonte
The format argument must contain a valid .NET Framework format string, either as a standard format string (for example, "C" or "D"), or as a pattern of custom characters for dates and numeric values (for example, "MMMM DD, yyyy (dddd)")
Use the FORMAT function for locale-aware formatting of date/time and number values as strings. For general data type conversions, use CAST or CONVERT.
Verifique a sintaxe CAST e CONVERT de t-sql:
http://msdn.microsoft.com/en-us/library/ms187928.aspx
fonte
101 - EUA - MM / DD / AAAA
108 - Tempo - HH: MI: SS
112 - Data - AAAAMMDD
121 - ODBC - AAAA-MM-DD HH: MI: SS.FFF
20 - ODBC - AAAA-MM-DD HH: MI: SS
fonte
Muitas pessoas responderam a essa pergunta, mas acho que a solução mais simples foi deixada de lado.
SQL SERVER (acredito que seja 2012+) tem equivalentes de string implícitos para DATETIME2, conforme mostrado aqui
Veja a seção sobre "Formatos de literal de string suportados para datetime2"
Para responder à pergunta dos OPs explicitamente:
resultado:
Observação: a primeira variável (
myVar
) também contém o valor'2019-01-23 12:24:00.0000000'
. Ele apenas é formatadoJan 23 2019 12:24PM
devido à formatação padrão definida para SQL SERVER, que é chamada quando você usaPRINT
. Não se deixe enganar aqui por isso, a string real em(myVer)
='2019-01-23 12:24:00.0000000'
fonte
Experimente abaixo:
fonte