Como posso usar o tipo de dados “Data” no sql server?

Olá Amigos Preciso da sua ajuda por favor quando estou tentando criar coluna na tabela com tipo de dados “Data” isso me dá erro e não consigo adicioná-lo aqui é o meu código

Create table Orders ( Order_ID INT Primary Key, Book_name varchar(100) , isbn varchar(100) , Customer_ID INT Foreign key references Customer, Order_date date, ); 

outra coisa que requer de mim para obter data de algo que é antes de criar um

para ser mais claro: a consulta solicitada indica para encontrar data antes de 2 de agosto Como posso fazer isso

Eu tentei inserir dados como esse

 Insert Into Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (1, 'Design User Interface',9345678210123, 1, '02-08-2015'); Insert Into Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (2, 'Fire',9654693261489, 1, '05-08-2015'); Insert Into Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (3, 'The Odyssey',9654864332511, 2, '01-08-2015'); Insert Into Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (4, 'Anatomy',9654877777755, 2, '30-07-2015'); Insert Into Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (5, 'Surgery',9654864951753, 2, '01-07-2015'); 

mas, aceita apenas as 3 primeiras inserções e as duas últimas me dão erro: /

   

Você não tem nenhum problema com os “dois últimos”.

No entanto, você tem um problema com todos eles, mas um ponto após o outro.

Datas literais dependem da cultura do seu sistema

Suas datas são interpretadas como MM-DD-AAAA. Essa intrepretação é dependente da cultura do seu sistema. Os três primeiros estão se transformando em datas erradas, mas funcionam. O quarto quebra e o quinto nunca é executado (devido ao erro anterior).

Então, o erro real está na linha 4.

Sempre que você lida com datas, use formatos independentes de cultura. É melhor usar um dos seguintes

formato universal

 20150730 (=> the 30th of July in 2015) 

Formato ODBC

 {d'2015-07-30'} or {t'23:30:59'} or {ts'2015-07-30 23:30:59'} 

ISO 8601

 '2015-07-30T00:00:00' 

Eu estou supondo que o erro que você está recebendo é:

A conversão falhou ao converter data e / ou hora da cadeia de caracteres.

O único outro erro que eu pude ver você recebendo dos dados que você forneceu é uma violação da FOREIGN KEY . No entanto, como você indicou que o terceiro INSERT passou, e o quarto usa o mesmo ID de chave estrangeira, isso não parece ser o caso.

Então, o motivo pelo qual você está recebendo este erro é devido ao DATEFORMAT fornecido não estar no formato esperado.

O modo ANSI Standard de representar um DATE está no formato YYYY-MM-DD . O formato que você forneceu parece estar em DD-MM-YYYY , mas o padrão para sua session parece estar esperando MM-DD-YYYY , o que resulta nas seguintes datas sendo interpretadas no INSERT :

 Order_ID Order_Date -------------------------- 1 Feb 02 2015 2 May 08 2015 3 Jan 08 2015 4 (30th month?) 07 2015 ^- This is the part that's erring. 

Como sua intenção parece ser DD-MM-YYYY , você pode abordar essas duas maneiras:

  1. Alterando os formatos DATE para o padrão ANSI:

 Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (1, 'Design User Interface',9345678210123, 1, '2015-08-02'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (2, 'Fire',9654693261489, 1, '2015-08-05'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (3, 'The Odyssey',9654864332511, 2, '2015-08-01'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (4, 'Anatomy',9654877777755, 2, '2015-07-30'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (5, 'Surgery',9654864951753, 2, '2015-07-01'); 
  1. Altere o DATEFORMAT para a transação:

 Set DateFormat dmy Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (1, 'Design User Interface',9345678210123, 1, '02-08-2015'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (2, 'Fire',9654693261489, 1, '05-08-2015'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (3, 'The Odyssey',9654864332511, 2, '01-08-2015'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (4, 'Anatomy',9654877777755, 2, '30-07-2015'); Insert Into #Orders(Order_ID, Book_name, isbn, Customer_ID, Order_date) values (5, 'Surgery',9654864951753, 2, '01-07-2015'); 

Eu pessoalmente recomendaria a primeira opção, já que é um hábito melhor entrar quando fizer referência a datas.