Как запросить первое число недели ПРЕДЫДУЩЕГО года

Я ломаю голову, пытаясь понять это, и, похоже, я не могу найти никаких существующих потоков, которые помогли бы.

Просто я хотел бы найти первый день недели (как дату), но год назад, для любой заданной даты. Наша календарная неделя начинается Воскресенье.

Вот снимок стола, который у меня есть

Любая помощь приветствуется!

Спасибо!

Так ты посмотрел руководство и ничего не нашел? Продолжайте копаться, есть много хороших вещей.

tadman 31.07.2018 21:33

Я это сделал, хотя я новичок в SQL, и манипуляции с датами никогда не были моей фортой. Приведенные ниже пояснения были полезны. В любом случае спасибо, sadman.

JeffersonSteele 31.07.2018 21:51

Обычно лучше попробовать что-нибудь, что-нибудь, чтобы показать, что вы пытались, а не отказались и просто разместили в Stack Overflow. Часто мы можем взять ваше нефункциональное решение на небольшое расстояние, не переделывая всю вашу работу с нуля.

tadman 31.07.2018 22:02
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
3
49
3

Ответы 3

Посмотри это. Как мне получить первый день недели даты в 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

Другие вопросы по теме