Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

формат DateTime в MySQL5 и в Delphi5.5. [D5, MySQL]


Chery ©   (2004-11-26 19:28:00) 

Что-то не сопоставляются форматы DateTime в MySQL5 и в Delphi5.5.
Там где использую DateTime не идет транзакция, как только убираю DateTime - все нормально.


Chery   (2004-12-02 13:53:00) [1]

Значит Вы с таким не сталкивались?
В БД MySQL, в ячейки (поля) формата DateTime, Date, TimeStamp не могу вставить данные с Делфы. Ошибки не выдает. Как мне хотя бы отловить эту "непонятку" ?


sniknik   (2004-11-30 20:38:00) [2]

ну так научись правильно оперировать, а то ведь не понять тебя.


Chery   (2004-11-30 16:59:00) [3]

Хорошо, не правильно оперирую понятиями. Но проблема осталась.


Anatoly Podgoretsky   (2004-11-30 14:56:00) [4]

Что-то не сопоставляются форматы DateTime в MySQL5 и в Delphi5.5.

А никак они и сопостовлять не могут, поскольку такого продукта, как Delphi5.5 просто не существует в природе.


Chery   (2004-11-30 14:16:00) [5]

Ошибки не выдает, все нормально, тока не записывается в базу. Я подключаюсь к БД в Access (анологичная БД) - все работает. Я думал, может что-то с MySQL - ничего не могу понять, может у кого-то подобное было уже.


sniknik   (2004-11-30 12:21:00) [6]

вот так должно работать, эта (!!! только эта) строчка правильная.
но подозреваю у тебя и оно не работает, судя по некоторым признакам (очень уж после ответа "да так", напрашивается фраза "а вот и нет, так тоже не хочет", зачем этот вопрос нужен вместо проверки), но раз так то виноват в этом уже другой код. (!!!)

вообше непонятно что и как ты делаеш, зачем к примеру инсерт в BeforePost ([8]), какая связь, какие компоненты, зачем ClientDataSet и сервер(упоминалось), трехзвенка? но тогда где его код и структура? и почему нет провайдера данных в списке используемого.
неясностей много, а ты даже сообщение об ошибке не приводиш ("Нет, не хочет так:" это извини еще один бред, кто не хочет? чего не хочет? кого? и почему?)...

еще раз, возми книгу по базам, почитай (хотя бы для того чтобы вопросы осмыссленно задавать).


Chery   (2004-11-30 11:37:00) [7]

clPrikaz_Student.FieldByName('Dte_Prikaza').AsDateTime:=Now;
А так?


sniknik   (2004-11-30 11:11:00) [8]

11 деленное на 11 и деленное на 2004... с чего бы ему хотеть? (кстати вполне легальная дата будет гдето в районе 30.12.1899 0:00:43)

я же ясно написал "переменная DateTime"а не то что ты под этим желаеш видеть (то строку, то бред какойто), не находиш что надо бы книжек почитать? по основам хотябы.


Chery   (2004-11-30 10:30:00) [9]

Нет, не хочет так:
clPrikaz_Student.FieldByName('Dte_Prikaza').AsDateTime:= 11/11/2004;


sniknik   (2004-11-29 20:55:00) [10]

> Хорошо, дело не в типах
именно в типах... и очень плохо что их не различаеш, строку с датой путаеш.

> Я уже пробывал с ГГГГ-ММ-ДД. Разницы никакой.
забудь про ГГГГ-ММ-ДД и про ММ-ДД-ГГГГ и про .... остальное того же  плана... плана (? хм. ну если только план хороший ;о)))

> Не работает (не добавляет), но когда в BeforePost пишу
> clPrikaz_Student.FieldByName('Dte_Prikaza').AsVariant:=Null;
> То работает. Формат поля даты в базе DATETIME.
раз так работает то и так должно
clPrikaz_Student.FieldByName('Dte_Prikaza').AsDate[Time]:= переменная DateTime;


Chery   (2004-11-29 18:52:00) [11]

Хорошо, дело не в типах. Дело в том почему у меня не апдейтится?
Я уже пробывал с ГГГГ-ММ-ДД. Разницы никакой.
Вобщем вот:
ДБГрид, DataSource1, ClientDataSet1.
После Пост делаю апдейт: clPrikaz_Student.ApplyUpdates(-1);
На сервере вставляю:
insert into Prikaz_Student
(Kod_Stud, N_Prikaza, Dte_Prikaza, Kod_Prikaza)
values
(:Kod_Stud, :N_Prikaza, :Dte_Prikaza, :Kod_Prikaza)

Не работает (не добавляет), но когда в BeforePost пишу
clPrikaz_Student.FieldByName('Dte_Prikaza').AsVariant:=Null;
То работает. Формат поля даты в базе DATETIME. СУБД: MySQL5, драйвер MyODBC-3.51.10.


sniknik   (2004-11-29 13:59:00) [12]

> А мне надо дата, только в формате ГГГГ-ММ-ДД.
ктото просто бредит...
неужели нельзя посмотреть исходный тип дататайма? и какой такой у него формат задаваемый строкой? люди!!! ну попытайтась понять, число это не строка у него нет формата! есть только форма представления/преобразования (из той же строки). не можете понять ну хоть поверьте на слово, не врут же вам.
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1101467614&n=1

какой формат у числа 1000000 например?
а если я его задам строкой?
так 1 000 000 или так 1000000.00 или так 1.000.000,00 или еще както, ну число то от этого не изменится...
или вы о том в каком типе представлено? тогда другое дело double от extended отличаются (если не было переопределения типов), но речь о количестве байт в типе а не о формате! (минусов или точек между байтами нет!!! верьте мне)


Chery   (2004-11-29 13:19:00) [13]

FormatDateTime - возвращает Стринг. А мне надо дата, только в формате ГГГГ-ММ-ДД.


Chery   (2004-11-29 12:24:00) [14]

Артем1,
Пробовал явно задать (ГГГГ-ММ-ДД):
clPrikaz_Student.FieldByName('Dte_Prikaza').AsVariant:='2004.01.11';
Но тоже самое - не апдейтит.

И второй вопрос: Можно ли средствами Делфи перевести дату в Unix timestamp (удобный для МуСКЛ и ПХП формат)? Может я так решу этот трабл.


Chery   (2004-11-29 11:52:00) [15]

Я задаю в Делфи дату (дд.мм.гггг) и сохраняю ее в базу МуСКЛ, ApplyUpdates(-1); На сервере:
insert into Prikaz_Student
 (Kod_Stud, N_Prikaza, Dte_Prikaza, Kod_Prikaza)
values
 (:Kod_Stud, :N_Prikaza, :Dte_Prikaza, :Kod_Prikaza)
И из-за даты не апдейтит. Формат даты в базе DATETIME.


Chery   (2004-11-29 10:28:00) [16]

Ага, спасибо. А как в Делфи перевисти Дату в  32-битное целое число в виде Unix timestamp.


Term   (2004-11-28 19:42:00) [17]

ты дату в запрос через параметры передаеШ??? тогда никаких проблем не должно быть,
> нужно использовате преобразование дат, с пом функций форматдате
> или датеформат, преобразование даты в строку...

а это если ты дату пишеш в самом запросе тогда да иначе будут вылетать эксэпшэны


Артем1   (2004-11-28 12:24:00) [18]

в МайсСкл дата хранится в формате ГГГГ-ММ-ДД, а в Д по умолчанию ДД-ММ-ГГГГ, нужно использовате преобразование дат, с пом функций форматдате или датеформат, преобразование даты в строку...


Наверх

Титульная страница Поиск, карта сайта Написать письмо