![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Стринг - Дата - Максимальное значение. [D5, MySQL]
Chery © (2004-12-02 14:15:00)Есть стринговое поле S, в котором в формате стринг записаны даты (дд.мм.гггг). Как мне найти максимальную дату? Неужели на клиенте создавать цикл (While) переводить в формат datetime и искать макс.? Как это сделать фильтром?
sniknik (2004-12-03 22:01:00) [1]> А в МуСКЛ данные хранятся как гггг.мм.дд.
по моему уже в 10й раз только для тебя (я не первый но был в их числе ;) MySQL как и любая другая современная базе НЕ ХРАНИТ даты в строках (а в типах detetime/... ЧИСЛА!) и поэтому НЕ ИМЕЕТ формата хранения (в виде "гггг.мм.дд"), только отображения/преобразования.
ты так и не нашол книжек для чтения?
Chery (2004-12-03 13:45:00) [2]Ну, я же передаю с сервера стринг. А в МуСКЛ данные хранятся как гггг.мм.дд. Вот они мне так и отображаются.
Johnmen (2004-12-03 13:21:00) [3]А причём здесь, как она отображаетсяв приложении ?
Chery (2004-12-03 13:11:00) [4]ТОлько в приложении дата ест-но отображается в америк. формате:
гггг.мм.дд.
Есть идеи как быстро и безболезненно её к "нашему виду" привести дд.мм.гггг?
Chery (2004-12-03 13:04:00) [5]Кажись заработало.
SELECT CAST(Dat1 AS CHAR) as Dat1, f
FROM Dat
А потом
как и было:
insert into Dat
(Dat1, f)
values
(:Dat1, :f)
Chery (2004-12-03 12:33:00) [6]Или мне надо к передаваемому параметру :Dat1 добавить ковычки? Тоже как-то звучит не очень...
Chery (2004-12-03 12:27:00) [7]Значит тут такое дело:
Из: http://dev.mysql.com/doc/mysql/ru/Loading_tables.html
"Обратите внимание на то, что здесь строковые выражения и даты представлены в виде ограниченных кавычками строк."
Вот это работает:
INSERT INTO Dat
VALUES ('2003.11.09');
Значит по идее мне надо передать Строку? Я не совсем понимаю.
В FieldDefs указываю ftString на поле даты. На клиенте:ClientDataSet2.Fields[0].AsString:= DateTimeToStr(Date);
Сервер в UpdateSQL1 без изменений:
insert into Dat
(Dat1, f)
values
(:Dat1, :f)
И НИЧЕГО. Может мне на сервере надо преобразовать в стринг? Как?
Александр Иванов (2004-12-03 11:33:00) [8]Этот пример не для РНР.
Возможет такой вариант:
update table1 set Date1 = Now()
Только нужно не забывать, что текущее время вставится сервера.
Chery (2004-12-03 11:10:00) [9]Хорошо, спасибо.
Но по ходу появился такой вопрос:
Если у меня поле в MySQL - DateTime.
А на клиенте я делаю
ClientDataSet1.Insert;
ClientDataSet1.Fields[0].AsDateTime:= Now;
ClientDataSet1.Post;
ClientDataSet1.ApplyUpdates(-1);
А на сервере в UpdateSQL1:
insert into Dat
(dat1)
values
(:dat1)
То дата не добавляется. Ошибки не выдает, просто не апдейтит. В доках http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
Приведен пример: mysql_query("INSERT INTO CALENDAR SET date=date_add(now(),INTERVAL LAST_INSERT_ID() DAY)");
Но это я так понимаю для PHP и т.п.
Как быть?
Александр Иванов (2004-12-02 16:36:00) [10]DATE_FORMAT(date,format)
Formats the date value according to the format string.
http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html
Там вообще много интерсного.
Chery (2004-12-02 16:04:00) [11]Что значит Date_Format? В СКЛ? Сорри за непонимание.
Александр Иванов (2004-12-02 15:45:00) [12]А посмотреть предыдущие ветки?
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1101976169&n=1
Chery (2004-12-02 15:38:00) [13]Чувствую никак... там много чего не работает...
А как профильтровать на клиенте? (записей в табл. не много).
Виталий Панасенко (2004-12-02 14:47:00) [14]Значит узнай, как в MySQL конвертировать один тип в другой
Chery (2004-12-02 14:44:00) [15]S - это имя моего стрингового поля? Если да, то у меня в MySQL не работает.
Александр Иванов (2004-12-02 14:24:00) [16]SELECT MAX(CAST(S AS DATE)) FROM TAB