2013-11-09 3 views
2

Хорошо, что может быть предложено где-то, но я не могу найти его на Google или SO,Что такое дата? строка? или Двухместный?

Мой запрос был

INSERT INTO Tracking (OrderNum, PickupDate, ...) VALUES (95370,10/01/2013, .....) 

пластинчатые был скрипт обновления MS-Access db..and целевой столбец pickupDate была дата/тип данных времени в дб доступа ..

, когда я запустил этот запрос, информация вставляется в БД не10/01/2013, а его было долго цифра, как 34444444299384 (что-то вроде этого, Didnt отметил, что exac ждение) ..

но когда я использую следующий запрос

INSERT INTO Tracking (OrderNum, PickupDate, ...) VALUES (95370,'10/01/2013', .....) 

Так что я знаю, ничего между qoutes является строковым

  • так, является Познакомься с строка ??
  • почему результаты разные для 10/01/2013 и "10/01/2013"?

Может кто-нибудь, пожалуйста, объясните мне это ??

спасибо за вашу руководящему ..

+0

Этот вопрос помечается MySQL, но вы упоминаете MS-доступ в вашем тексте. Какой тип базы данных вы используете? –

ответ

4

При использовании:

10/01/2013 

это выражение: 10 делится на 1, деленной на 2013, что дает в результате: 0,0049677 ... который затем преобразуется в дату, поскольку даты действительно являются числами.

При использовании:

'10/01/2013' 

Это строка, которая преобразуется в дату.

Внутренне дата хранится как число, а не строка.

0

Если вы используете DATE в качестве типа столбца, ваш ввод неправильный. MySQL ожидает '2013-10-01', а не '10/01/2013'. См. the manual.

+1

см. Вход для вашего ответа –

3

Я думаю, что 10/01/2013 интерпретировалось как операция деления, поэтому итоговое число было число небольших плавающим:

0.00496770988 

Оттуда, MySQL, вероятно, предположил, что вы дали ему метку времени UNIX и подогнаны чтобы попытаться преобразовать его в дату хранения.

То, что вы хотите сделать вместо этого дать MySQL формат он предпочитает YYYY-MM-DD и процитировать:

'2013-10-01' 

More on MySQL Dates

Смежные вопросы