У меня есть дата. Я должен определить дату понедельника в неделю, на которой моя дата лежит.Как найти начальную дату недели
ответ
SET DATEFIRST 1
SELECT DATEADD(DAY,1-DATEPART(WEEKDAY,'2012-01-01'),'2012-01-01')
Спасибо за ответ –
** Браво !! ** Короткий и региональный независимый! –
Это зависит от @@DATEFIRST
. Чтобы получить начало недели в вашем случае является понедельник:
SET DATEFIRST 1
DECLARE @ThisDate DATE = GETDATE()
SELECT DATEADD(DAY, 1 - DATEPART(WEEKDAY, @ThisDate), @ThisDate)
Моя неделя начинается с понедельника –
Yup. Что-то не так с моим ответом? –
Когда мы пробуем с воскресеньем, это создаст проблему. Я должен получить понедельник до этого. попробуйте этот select dateadd (wk, lateiff (wk, 0, '2012-01-01'), 0). –
MSSQL
SELECT CONVERT(varchar,DATEADD(day, DATEDIFF(day, 0, GETDATE()) /7*7, 0),100) AS weekstart
MySql
SELECT DATE_ADD(date, INTERVAL(1-DAYOFWEEK(date)) +1 DAY) AS weekStart
MSSQL один довольно непрозрачный. Если я увидел это в производственном коде, я бы переписал его, чтобы быть немного более очевидным. –
Во-вторых, мнение @BenThul –
@BenThul, тем не менее, это лучшее решение. Однако преобразование его в варчар - огромная ошибка. Дата больше не является датой. Это единственный ответ, который не зависит от DATEFIRST. –
SELECT date_sub(curdate(), INTERVAL WEEKDAY(curdate()) - 0 DAY)
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#c8178
Учитывает разницу между эпохой (день 0) и датой.
Разделите это число на 7 и округлить (автоматическое округление при работе с целыми числами), это будет количество недель, чтобы добавить в день 0
SELECT dateadd(week, datediff(d, 0, getdate())/7, 0)
@ Giosco была ошибка в моих расчетах. Он был исправлен. Сейчас неделя начинается в понедельник вместо воскресенья. Это не будет зависеть от DATEFIRST, который, по моему мнению, является большой ошибкой. Если у вас есть это в функции, вы будете вынуждены устанавливать DATEFIRST каждый раз, когда вы вызываете функцию. –
@SQLPolice моя неделя начинается в понедельник. Просто прошел мой первоначальный ответ и понял, что ошибок не было. –
Да, теперь это правильное решение. «0» (2-й операнд в «датиффе») означает 1 января 1900 года - и по происшествию ** 20-й век начался в понедельник. ** (что было круто;)) Итак, вы в основном рассчитываете количество полных недель с 1900-01-01, и вы добавляете эти недели в понедельник, 1 января 1900 года. Таким образом, вы получаете последний понедельник. –
- 1. SQL: как получить начальную дату недели и дату окончания недели
- 2. Как получить начальную дату недели в DB2?
- 3. Как получить начальную дату недели с номера недели в postgresql?
- 4. Получить начальную дату недели, используя datepart
- 5. Как вы получаете «начальную дату недели» и «дату окончания недели» из номера недели в SQL Server?
- 6. Получить начальную дату с номера недели
- 7. Получить начальную дату недели (настраиваемый начальный день недели)
- 8. Как найти начальную и конечную даты недели с указанной даты
- 9. Как получить начальную дату недели с использованием SQL Server 2008
- 10. Как получить начальную дату на основе номера недели в vb6?
- 11. Получить начальную дату и дату окончания недели, указать номер недели и год
- 12. PHP получает начальную и конечную дату недели по недельному номеру
- 13. Как найти дату начала недели с определенной даты?
- 14. Как найти дату первого дня текущей недели
- 15. Получить начальную и конечную дату, пройдя номер недели и год
- 16. Как рассчитать начальную дату недели только с номера года и недели, на стороне сервера?
- 17. Как я могу получить начальную дату недели и дату окончания с любой даты
- 18. Получить начальную и конечную дату недели с номера недели и год в андроиде
- 19. Как получить начальную дату месяца в DB2
- 20. Как получить дату начала и дату окончания текущей недели?
- 21. Создайте все даты недели, используя текущую дату, также покажите начальную дату недели в понедельник и в выходные дни в воскресенье
- 22. Как найти даты календарной недели?
- 23. Как вернуть всю дату недели
- 24. MySQL: выберите дату текущего дня недели
- 25. Как найти дату дней недели по текущему дню
- 26. Как найти Ближайший (день недели) на заданную дату
- 27. Как я могу найти дату через определенные недели?
- 28. Как найти заданную дату, когда указан указанный день недели
- 29. Как найти дату со значения недели месяца в laravel ..?
- 30. Как найти первую и последнюю дату недели по месяцу?
'SQL-server' или' mysql' ? Отметьте свой вопрос правильно. –
Я полагаю, что также будет иметь значение, как вы классифицируете, какой день принадлежит той неделе - то есть, в какой день начинается ваша неделя? –
Моя неделя начинается с понедельника –