Работа с дати в mysql - Shinobi

тайни на програмирането

MySql е не просто привлекателна система за организиране на съхранение на данни, но и ОТЛИЧЕН ИНСТРУМЕНТ ЗА ОБРАБОТКА НА ИНФОРМАЦИЯ.

Днес ще анализираме как да работим с функциите mysql: Date, DateTime. Ще говоря и за методите mysql, използвани за конвертиране на низ в дата. Като цяло, различни подходи за решаване на проблеми със свързани дати в mysql СУБД.

Да предположим, че пишете система за изпращане на SMS известия въз основа на вашата клиентска база.
Таблица 1.tbl_clients * - таблица с клиентски данни (пълно име и дата на раждане), данни за количеството, вида на стоките и състоянието на обработката на заявлението.

Таблица 2.tbl_sms - таблица на състоянията на SMS и връзките с клиентски идентификатор с датата на получаване на състоянието.

По-близо до боевете. Въоръжени с вградени функции.

В таблицата tbl_sms за един Id_clients се записват няколко записа с различни състояния и час на получаване. Например:

Да предположим, че шефът иска списък с най-новите статуси за всички клиенти. Можете бързо да разрешите проблема, като използвате вградени функции. Заявката за sql за такъв случай изглежда така:

Резултатът от заявката е селекция от записи с максималната дата за всеки Id_clients:

Искането е сложно, аз самият не разбрах за първи път, но ще се опитам да обясня. В заявката обединяваме две таблици. Първият tbl_sms - съдържа всички данни без оглед на условията, така да се каже в "сурова форма". Втора таблица - резултат от заявката

към същите tbl_sms с помощта на функцията MAX () и групиране по полето Id_clients.

Във втората таблица групираме записите по id_clients, като използваме клаузата GROUP BY Id_clients. Тоест сега имаме един запис (въпреки че има няколко записа за една стойност на id_clients в таблицата) - това е една стойност на полето id_clients. В SELECT използваме функцията MAX (), резултатът от която е изборът на максималната стойност, записана в полето на таблицата. За справка в MySQL има обратна функция MIN (). В резултат на това в заявка, използваща функцията MAX (), получаваме максималната стойност на полето Date_status за всяка стойност на полето id_clients.
И накрая, избор на записи, които отговарят на следните условия: „ON ts. id_clients = ts_max. id_clients и ts. Date_status = ts_max.max_dat ”, получаваме желания резултат.