Quero inserir um datetime
valor em uma tabela (SQL Server) usando a consulta sql abaixo
insert into table1(approvaldate)values(18-06-12 10:34:09 AM);
Mas eu recebo esta mensagem de erro. Incorrect syntax near '10'.
Eu tentei com as aspas
insert into table1(approvaldate)values('18-06-12 10:34:09 AM');
Recebo esta mensagem de erro Cannot convert varchar to datetime
Por favor, ajude! Obrigado.
sql
sql-server-2008
datetime
Shee
fonte
fonte
5
significa?YYYYMMDD HH:MM:SS
(no formato de 24 horas - o formato mundial, qualquer pessoa, exceto os EUA, usa isso, não apenas os militares ...) sem os traços - funciona, mesmo para oBritish
idioma. Se você usarYYYY-MM-DD HH:MM:SS
no entanto, ele falhará - nesse caso (com os traços), será necessário separar data e hora com umT
literal.SET DATEFORMAT
declaração . Essa é a configuração para uma conexão individual, mas a configuração pode ser especificada em todo o servidor. Você também pode especificarSET LANGUAGE
para controlar coisas como qual caractere é usado para o radix e tal, e o formato da data será herdado disso (novamente, nos níveis de servidor ou conexão). O padrão é inglês dos EUA e mdy é o formato dos EUA. ymd com datas de 4 anos sempre funciona, no entanto.Uma opção mais independente de idioma para literais de cadeia de caracteres é o padrão internacional ISO 8601, formato "AAAA-MM-DDThh: mm: ss". Usei a consulta SQL abaixo para testar o formato e, de fato, funciona em todas as linguagens SQL em sys.syslanguages :
De acordo com a seção Formatos literais de data e hora da seqüência de caracteres no Microsoft TechNet, o formato de data padrão ANSI SQL padrão "AAAA-MM-DD hh: mm: ss" deve ser "multilíngue". No entanto, usando a mesma consulta, o formato ANSI não funciona em todos os idiomas SQL.
Por exemplo, em dinamarquês, você encontrará muitos erros como o seguinte:
Se você deseja criar uma consulta em C # para execução no SQL Server e precisar passar uma data no formato ISO 8601, use o especificador de formato Classificável "s" :
fonte
YYYYMMDD
para apenas data, e querYYYY-MM-DDThh:mm:ss
(com traços, e sim, umT
entre data e parte do tempo!) OuYYYYMMDD HH:MM:SS
(sem traços, não literais separação) para ser verdadeiramente independente idioma ...O estúdio de gerenciamento cria scripts como:
fonte
você precisa adicioná-lo como
fonte
Não há necessidade de usar convert. Basta listá-lo como uma data citada no formato ISO 8601.
Igual a:
O separador precisa ser um
/
e precisa estar entre'
aspas simples .fonte
Se você estiver armazenando valores através de qualquer linguagem de programação
Aqui está um exemplo em c #
Para armazenar a data, você deve convertê-la primeiro e depois armazená-la
FooDate é uma variável datetime que contém sua data em seu formato.
fonte
Encontro um problema mais genérico: obter diferentes formatos de data e hora (e não necessariamente conhecidos) e inseri-los na coluna data e hora. Eu o resolvi usando esta declaração, que finalmente se tornou uma função escalar (relevante para o estilo ODBC canônico, americano, ANSI e britânico \ data de franquia - pode ser expandida):
fonte