-
Php. Указание даты в словесном (относительном) формате.
Работа с датой — задача, которая встречается повсеместно. Таймштамп и класс DateTime существенно упрощают жизнь, но есть еще одна возможность, о которой сказано достаточно мало в Сети. Речь идет об относительном (словесном) указании даты. Он позволяет указать дату, например понедельника этой недели без высчитывания дат, отнимания от них количества дней и т.д. — а простым…
-
MySQL. Как сделать дамп и сразу импортировать его на удаленный сервер?
Очень редко — даже может быть один раз в жизни 🙂 — бывает необходимость сделать бекап и тут же его импортировать. Т.е. не делать файл выгрузки, который после будет импортирован. Подобная ситуация может возникнуть при работе с критично большими объемами БД или ограниченном месте на сервере, которое не позволяет сделать бекап. Причин может быть много.…
-
MySQL. Оператор CAST. Преобразование типов.
Часто простые задачи вызывают много проблем. Например, если Вам надо вывести среднюю стоимость товаров с БД строкой — «Средняя цена — …..». Здесь мы получим ошибку — т.к. следует использовать приведение (преобразование) типов. Итак, простой интуитивный запрос выглядит так: SELECT ‘Средняя цена = ‘+AVG(price) FROM products Но тут мы, как раз, и столкнемся с ошибкой.…
-
MySQL. Выборка записей за сегодня-вчера/неделю/месяц
Выборка данных за определенный период очень частая задача, которая решается крайне просто. Среди множества вариантов решения в сети меня лично прильщает или использование INTERVAL или применение следующих методов. За сегодня SELECT * FROM TABLE WHERE tc_date >= CURDATE() За вчера SELECT * FROM TABLE WHERE tc_date >= (CURDATE()-1) AND tc_date < CURDATE() За неделю SELECT…
-
MySQL. Использование REPLACE
Работа со строками в MySQL продумана достаточно хорошо и имеет ряд очень полезных функций. Одной из таких функций в является функция REPLACE, о которой пойдет речь ниже. Итак, приведу простой пример, с которого все станет на места. UPDATE `some_table` SET `some_field`= REPLACE(`some_field`, ‘..’, ‘. . .’); Думаю тут все передльно ясно. Мы обновляем все поля,…
-
Php. PDO. Как узнать количество обновленных записей?
При работе с PDO часто возникает необходимость узнать, сколько же записей было затронуто при выполнении последнего запроса. Получить эту информацию можно при помощи метода rowCount(). Рассмотрим простейший пример: $pdo = new PDO($dsn, $username, $password); $query = «UPDATE some_tables SET updated = NOW() WHERE id = ?»; $res = $pdo->prepare($query); $res->execute( array( $id ) ); echo…
-
MySQL. Как вывести фамилию и инициалы пользователя?
Очень удобно выводить инициалы пользователя вместе с его фамилией. Информативность повышается, а места занимается не много. При правильной структуре БД — имя, фамилия и отчество должны храниться в разных полях — поэтому следующий пример учитывает именно эту ситуацию. Итак, запрос для получения фамилии и первой буквы имени и отчества в разных полях: SELECT last_name, LEFT(first_name,1),…
-
MySQL. Обрезка данных при запросе с GROUP_CONCAT
Встретился со странным поведением — при запросе к MySQL с функцией GROUP_CONCAT, которая возвращала список всех телефонов за период времени данные хаотично обрезались. Т.е. строка приходила не полностью. Покопавшись, нашел и причину и решение. Надо просто исправить в my.cnf: group_concat_max_len=4096 … или выполнить запрос: SET GLOBAL group_concat_max_len=1024 * 4 Так или иначе мы устанавливаем предельную…
-
MySQL. Список форматов для функции DATE_FORMAT.
С функцией DATE_FORMAT в MySQL работали все. Но держать в голове все ее форматы проблематично — поэтому предлагаю сохранить в закладки данную страничку 🙂 [table] %M~Month name (January..December)~Имя месяца на английском языке %W~Weekday name (Sunday..Saturday)~День недели на английском %D~Day of the month with English suffix (1st, 2nd, 3rd, etc.)~День месяца на английском %Y~Year, numeric, 4…
-
MySQL. Как вывести названия месяцев на русском?
Работа с MySQL очень удобна — т.к. в нем есть множество встроенных функций, в т.ч. для работы с датой. Удобной также является и возможность локализации, что означает отличную возможность вывести название месяца на русском. Для этой задачи есть два решения. Первое — выполняем запрос: SET @@lc_time_names=’ru_RU’; Второе — добавить в конфиг (/etc/mysql/my.cnf) следующее значение: set-variable…