Topic: Сравнение дат

как правильно сравнить 2 даты, что бы понять какая из них больше?

Re: Сравнение дат

в этом примере находится ближайшая дата (больше) по отношению к системному времени
http://myvisualdatabase.com/forum/misc. … download=1

3 (edited by agatlogic101 2019-11-09 14:20:22)

Re: Сравнение дат

1)не пойму что там в скрипте написано... strftime(''%S'',''now'') >= strftime(''%S'',a) ORDER BY a ASC limit 1');
первый раз вижу знак %, да и вообще вся эта часть непонятна
2)А переменную как назначить для wDate? Я знаю что если через форму то
wDatemin := FormatDateTime('yyyy-mm-dd',поездка.DateTimePicker1.DateTime);
А как присвоить дату из таблицы?
wDatemin := таблица А столб Б ид = Form1.TableGrid1.sqlValue (там нужно где то указывать FormatDateTime('yyyy-mm-dd ?
PS. со вторым пунктом вроде разобрался, переменная пристроилась обычным способом

4 (edited by sibprogsistem 2019-11-09 14:29:11)

Re: Сравнение дат

Просто большую дату можно получить так

Form1.Edit1.Text:=SQLExecute ('SELECT MAX(DATE(a)) FROM q');

где  MAX(DATE(a)) - MAX значит максимальное значение
DATE(a) - выбираем из даты где "а" это имя поля
 

где именно Вам нужно сравнить даты?

Re: Сравнение дат

Если я сначала вытаскивыю данные переменной
wDatereal := SQLExecute('SELECT дата FROM event WHERE id='+ назначение_мероприятия.TableGrid1.sqlValue );
А потом их сохраняю в другую строку
SQLExecute('UPDATE trip SET дата_первого_города = "'+wDatereal+'"  WHERE id="'+idTrip+'"');
Так вот, дата сохраняется неправильно, такое ощущение что день сохраняется в год, а год в день. Путаница

Re: Сравнение дат

я так понимаю мне надо где то добавить
FormatDateTime('yyyy-mm-dd'
в
wDatereal := SQLExecute('SELECT дата FROM event WHERE id='+ назначение_мероприятия.TableGrid1.sqlValue );

Re: Сравнение дат

можно изменть получаемый форма даты так

SQLExecute('SELECT strftime("%d-%m-%Y",a) FROM q WHERE id=' + Form1.TableGrid1.sqlValue);

("%d-%m-%Y",a) - формат даты и поле из которого берем дату

Re: Сравнение дат

соблюдайте регистр букв

%d         День месяца: 00
%f         Доли секунды: SS.SSS
%H         час: 00-24
%j         день года: 001-366
%J         Юлианский день
%m         месяц: 01-12
%M         минуты: 00-59
%s         количество секунд с 1970-01-01 (unix timestamp)
%S         секунды: 00-59
%w         день недели 0-6 где Воскресенье==0
%W         неделя года: 00-53
%Y         год: 0000-9999
%%         %

Re: Сравнение дат

пишет что (имя моей базы данных tester).strtime does not exist
моя строчка до этого выглядела так
wDatereal := SQLExecute ('SELECT data FROM event WHERE id='+ назначение_мероприятия.TableGrid1.sqlValue );
по примеру селал
wDatereal := SQLExecute ('SELECT strftime("%d-%m-%Y",data) FROM event WHERE id='+ назначение_мероприятия.TableGrid1.sqlValue );
и он начал воспринимать strftime как название строки (как я понял)

10 (edited by sibprogsistem 2019-11-09 17:14:59)

Re: Сравнение дат

не существует
что странно
вот пример, просто клините по дате в гриде

Post's attachments

Attachment icon test.7z 2.67 kb, 246 downloads since 2019-11-09 

Re: Сравнение дат

Да... оказывается этот скрипт не работает на MySQL, а на SQLite он работает... вот только у меня проект MySQL...

Re: Сравнение дат

попробуйте так

SELECT DATE_FORMAT(data,GET_FORMAT(DATE,'EUR') FROM event WHERE id='+ назначение_мероприятия.TableGrid1.sqlValue );

 
GET_FORMAT(DATE,'USA')    '%m.%d.%Y'
GET_FORMAT(DATE,'JIS')    '%Y-%m-%d'
GET_FORMAT(DATE,'ISO')    '%Y-%m-%d'
GET_FORMAT(DATE,'EUR')    '%d.%m.%Y'
GET_FORMAT(DATE,'INTERNAL')    '%Y%m%d'
GET_FORMAT(DATETIME,'USA')    '%Y-%m-%d %H.%i.%s'
GET_FORMAT(DATETIME,'JIS')    '%Y-%m-%d %H:%i:%s'
GET_FORMAT(DATETIME,'ISO')    '%Y-%m-%d %H:%i:%s'
GET_FORMAT(DATETIME,'EUR')    '%Y-%m-%d %H.%i.%s'
GET_FORMAT(DATETIME,'INTERNAL')    '%Y%m%d%H%i%s'
GET_FORMAT(TIME,'USA')    '%h:%i:%s %p'
GET_FORMAT(TIME,'JIS')    '%H:%i:%s'
GET_FORMAT(TIME,'ISO')    '%H:%i:%s'
GET_FORMAT(TIME,'EUR')    '%H.%i.%s'
GET_FORMAT(TIME,'INTERNAL')    '%H%i%s'

13 (edited by agatlogic101 2019-11-10 07:40:18)

Re: Сравнение дат

Почему-то ошибка вылезает перед выбором формата в кавычках 'EUR' или любым другим. Причём если оставить ' ' пустыми, то программа хотя-бы запускается, но всё равно выдаёт ошибку. У вас данная строка работает? или это было предположение?

Re: Сравнение дат

взято из описания

https://dev.mysql.com/doc/refman/8.0/en … ate-format

15 (edited by agatlogic101 2019-11-10 11:13:44)

Re: Сравнение дат

разобрался... в итоге правильный способ такой
SELECT DATE_FORMAT(дата, "%d.%m.%Y") FROM event WHERE id='
https://www.w3schools.com/SQL/func_mysq … format.asp