Я ломаю голову, пытаясь понять это, и, похоже, я не могу найти никаких существующих потоков, которые помогли бы.
Просто я хотел бы найти первый день недели (как дату), но год назад, для любой заданной даты. Наша календарная неделя начинается Воскресенье.
Вот снимок стола, который у меня есть
Любая помощь приветствуется!
Спасибо!
Я это сделал, хотя я новичок в SQL, и манипуляции с датами никогда не были моей фортой. Приведенные ниже пояснения были полезны. В любом случае спасибо, sadman.
Обычно лучше попробовать что-нибудь, что-нибудь, чтобы показать, что вы пытались, а не отказались и просто разместили в Stack Overflow. Часто мы можем взять ваше нефункциональное решение на небольшое расстояние, не переделывая всю вашу работу с нуля.






Посмотри это. Как мне получить первый день недели даты в MySQL?
Получить желаемый результат можно так:
mydate - INTERVAL 1 YEAR + INTERVAL 1-DAYOFWEEK(mydate - INTERVAL 1 YEAR) DAY
Объяснение:
mydate - INTERVAL 1 YEAR
дает вам дату за год до mydate.
anyday + INTERVAL 1-DAYOFWEEK(anyday) DAY
дает вам воскресенье, начало недели anyday.
Точно так же вы можете получить первый день месяца anyday следующим образом:
LAST_DAY(anyday) + INTERVAL 1 DAY - INTERVAL 1 MONTH
Некоторые называют эту неделю и месяц усечение.
Вы можете использовать datesub(), чтобы вычесть один год из сегодняшнего дня (curdate()). Получите будний день с weekday(). Он возвращает число от 0 до 6, где 0 - понедельник. Вычтите это количество дней плюс один, так как ваш первый рабочий день - воскресенье, а не понедельник.
date_sub(date_sub(curdate(),
INTERVAL 1 YEAR),
INTERVAL weekday(date_sub(curdate(),
INTERVAL 1 YEAR)) + 1 DAY)
Вот как это сделать:
CREATE FUNCTION `SUNDAY`(indate date) RETURNS date
NO SQL
BEGIN
declare prevyear date;
set prevyear = indate - interval 1 year;
return prevyear - weekday(prevyear) - interval 1 day;
END
Так ты посмотрел руководство и ничего не нашел? Продолжайте копаться, есть много хороших вещей.