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

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

Стринг - Дата - Максимальное значение. [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


Наверх

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