Хотите найти дату недели на основе данной даты и данного дня недели

0

У меня есть синтаксис в MS SQL, как показано ниже:

select DATEADD(WK, datediff(WK, **1**,'**2018-04-4**'), **1**);

здесь мой подход - я прохожу startdate ie ('2018-04-4') и будний день, т.е. 1 на основе этой формулы дает мне точную дату, основанную на недельном дне

2018-04-03 00:00:00.000

if i am passing **6** result is 2018-04-01 00:00:00.000 
if i am passing **0** result is 2018-04-02 00:00:00.000  
if i am passing **1** result is 2018-04-03 00:00:00.000  
if i am passing **2** result is 2018-04-04 00:00:00.000 
if i am passing **3** result is 2018-04-05 00:00:00.000 
if i am passing **4** result is 2018-04-06 00:00:00.000 
if i am passing **5** result is 2018-04-07 00:00:00.000 

Теперь моя трудность заключается в том, что мне нужно перенести это в MySQL, и он там не работает.

Пожалуйста, предложите любое решение для получения результата, как указано выше.

  • 0
    если вы пройдете 3, это должно быть 5 апреля. у тебя опечатка
  • 0
    да вы правы
Теги:
mysql-workbench

1 ответ

0

вы можете использовать date_Add и date_sub для этого.

это дает вам первый день той недели, в которую вы проходите,

SELECT DATE_SUB('2018-04-04',INTERVAL WEEKDAY('2018-04-04') DAY);

комбинируя это с добавлением даты, вы можете генерировать дату в будний день

select date_add(date_sub('2018-04-04', interval weekday('2018-04-04') day), interval 3 day);

Изображение 174551

  • 0
    Вот одна проблема, когда я запускаю DATEADD (WK, datediff (wk, 6, '2018-04-4'), 6); sql дает мне 2018-04-01 00: 00: 00.000 эту дату. но в MySQL date_add (date_sub ('2018-04-04', интервал дня недели ('2018-04-04') день), интервал 6 дня) он возвращает 2018-04-08? для 0,1 2,3,4,5 работает правильно

Ещё вопросы

Сообщество Overcoder
Наверх
Меню