Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/64: Рейтинг темы: голосов - 64, средняя оценка - 4.95
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1

Выбрать понедельник той недели, на которую приходится дата

23.10.2016, 15:37. Показов 12110. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Делаю так:
SQL
1
2
SELECT Задача.dt_НазначенныйСрок, DATEADD (DD,datepart(dw,'20161024')-datepart(dw,Задача.dt_НазначенныйСрок),Задача.dt_НазначенныйСрок) AS Пн
FROM dbo.tsk_Задача Задача
Причем выражение datepart(dw,'20161024') добавляю только для того, чтобы избежать влияния установленного 1 дня недели на результат запроса (мне нужен всгда именно понедельник, даже если не он будет считаться первым днем недели).

Вопрос: а попроще это никак не выбирается?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.10.2016, 15:37
Ответы с готовыми решениями:

Известна дата и день недели некоторого события. Определить на какой день недели приходится начало года
Известна дата и день недели некоторого события. Определить на какой день недели приходится начало года. Использовать множества и не...

Известна дата и день недели некоторого события. Определить, на какой день недели приходится начало года
Известна дата и день недели некоторого события. Определить, на какой день недели приходится начало года.

Определить день недели, на который приходится дата d
type число =1..31; месяц=1..12; год=1..2000; дата = record ч: число; м: месяц; г: год end; деньнедели = (пн, вт, ср, чт, пт, сб,...

8
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
23.10.2016, 17:37
Лучший ответ Сообщение было отмечено texnik-san как решение

Решение

T-SQL
1
SELECT DATEADD(WEEK,DATEDIFF(WEEK,0,Задача.dt_НазначенныйСрок)-1,0)
1
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
23.10.2016, 19:18  [ТС]
Вау, круть, как элегантно!
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
24.10.2016, 11:21
Цитата Сообщение от texnik-san Посмотреть сообщение
Вау, круть, как элегантно!
Это потому, что 0 = '19000101' - на ваше счастье - понедельник.
Иначе пришлось бы допилить, было бы длиннее.
1
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
24.10.2016, 11:43
да и '17530101' , '00010101' тоже
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
25.10.2016, 16:19  [ТС]
Цитата Сообщение от iap Посмотреть сообщение
SELECT DATEADD(WEEK,DATEDIFF(WEEK,0,Задача.dt_Н азначенныйСрок)-1,0)
К моему глубочайшему сожалению, оно все-таки неправильно работает. Дням недели со среды по воскресенье сопоставляется правильный понедельник. А вот понедельникам и вторникам - понедельник на неделю раньше.

Вовзращать обратно к своей длинной формуле?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
25.10.2016, 16:59
странно, у меня вот это
SQL
1
2
3
SELECT DATEADD(WEEK,DATEDIFF(WEEK,0,DATEADD(DAY,4,getdate())),0)
  UNION ALL
SELECT DATEADD(WEEK,DATEDIFF(WEEK,0,getdate()),0)
возвращает вчера (20161024)
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
25.10.2016, 19:38
Лучший ответ Сообщение было отмечено texnik-san как решение

Решение

Цитата Сообщение от texnik-san Посмотреть сообщение
К моему глубочайшему сожалению, оно все-таки неправильно работает. Дням недели со среды по воскресенье сопоставляется правильный понедельник. А вот понедельникам и вторникам - понедельник на неделю раньше.
Попробуйте так:
T-SQL
1
SELECT DATEADD(DAY,DATEDIFF(DAY,0,Задача.dt_НазначенныйСрок)/7*7,0)
0
шапоклякистка 8-го дня
 Аватар для texnik-san
3681 / 2241 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
25.10.2016, 20:16  [ТС]
О! Отлично, то, то надо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.10.2016, 20:16
Помогаю со студенческими работами здесь

Определить день недели на который приходится заданная дата
Здесь d - число месяца, т - номер месяца, если начинать счет с марта, как это делали в Древнем Риме (март - 1, апрель - 2, ..., февраль -...

Вывести день недели на который приходится заданная дата
Вводится дата, выдается день недели на который она приходится, заранее спасибо!

По дате найти день недели, на который эта дата приходится
Ребята помогите пожалуйста написать программу, можно на с++ или на java или c#. Если не тяжело помогите для зачета нужно пожалуйста!

Определить, на какой день недели приходится 1 число любого месяца при заданном дне недели 1 января
Определит на какой день недели относиться 1 число любого месяца при заданном дне недели 1 января Примечания: В качестве оператора...

Узнать дату начала текущей недели (понедельник)
Всем доброго времени суток! Помогите узнать дату начала(понедельника) текущей недели. пробовала использовать SELECT...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru