unknown variable “character-set-server=utf-8”’ в mysqldump

Баг замечен в mysql 5.5.38 под SMP Debian Lin­ux 3.2.60.

При попытке что-то сделать с mysql­dump (даже если это mysql­dump –ver­sion) получается стереотипная ошибка:

unknown vari­able “character-set-server=utf-8”

Что намекает, что разработчик mysql­dump даже не подумал, что не для всех команд надо грузить настройки.

На Stack­Over­flow советуют найти my.cnf (в моём случае, лежит в /etc/mysql/my.cnf) и, как подсказали в крмментах, заменить character-set-server=utf-8 на character-set-server=utf8 в разделе [mysql­dump]. Между прочим, редактировать my.cnf можно только с правами админа.

SQL: Previous Month and Week

Получаем записи за прошлую неделю (от понедельника до полуночи с воскресенье на понедельник):

DECLARE @TodayDayOfWeek INT
DECLARE @EndOfPrevWeek DateTime
DECLARE @StartOfPrevWeek DateTime
SET @TodayDayOfWeek = datepart(dw, GetDate())
SET @EndOfPrevWeek = DATEADD(dd, -@TodayDayOfWeek, GetDate())
SET @StartOfPrevWeek = DATEADD(dd, -(@TodayDayOfWeek+6), GetDate())

SELECT
--- Тут выборка
WHERE
CREATED_DATE BETWEEN
CONVERT(DATE, @StartOfPrevWeek,7)
AND
CONVERT(DATE, @EndOfPrevWeek+2,7)
GROUP BY
p.PRODUCT_NAME

Если воскресенье учитывать не надо – вместо @EndOfPrevWeek + 2 надо писать @EndOfPrevWeek + 1.

Сделать выборку по месяцу намного проще:

DECLARE @EndOfPeriod DateTime
DECLARE @StartOfPriod DateTime
SET @StartOfPriod = DATEADD(mm, DATEDIFF(mm,0,getdate())-1, 0)
SET @EndOfPeriod = DATEADD(mm, 1, @StartOfPriod)

SELECT
---- тут выборка
WHERE
CREATED_DATE BETWEEN
CONVERT(DATE, @StartOfPriod,7)
AND
CONVERT(DATE, @EndOfPeriod,7)

Аналогичные штуки проходят с днём и годом.

Работает в т.ч. в MS SQL 2005 (если MSDN не врёт).