Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
dima-dima
1 / 1 / 3
Регистрация: 27.11.2012
Сообщений: 146
1

Преобразование дат

21.10.2018, 13:09. Просмотров 821. Ответов 3
Метки нет (Все метки)

На входе есть год и месяц (числа).
Нужно вернуть дату в формате yyyy.mm.dd
При этом это должен быть последний день данного месяца. Подскажите, пожалуйста, какой функцией можно воспользоваться.
Спасибо.

Добавлено через 6 минут
ms sql 2008
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2018, 13:09
Ответы с готовыми решениями:

Сравнение дат
Подскажите, пожалуйста, как можно сравнивать даты. У меня в таблице с пациентами есть колонка Дата...

Выражения из дат.
Подскажите, пожалуйста. У меня в одной таблице есть Дата выполнения работы, в другой -...

Запрос на пересечение дат
Помогите создать запрос есть 3 таблицы: Водители (штатный номер, ФИО, дата рождения) ...

Поиск пропущенных дат
Привет всем, столкнулся с такой проблемой: есть таблица примерно следующего содержания: id ...

Вывод всех дат
Добрый день! Подскажите, пожалуйста, как релизовать следующую вещь. Имеется таблица заказчиков и...

3
invm
2229 / 1466 / 478
Регистрация: 02.06.2013
Сообщений: 3,661
21.10.2018, 13:26 2
Лучший ответ Сообщение было отмечено dima-dima как решение

Решение

T-SQL
1
dateadd(day, -1, dateadd(month, месяц + 1, dateadd(year, год - 1900, '1900')))
1
iap
941 / 655 / 142
Регистрация: 27.11.2009
Сообщений: 1,971
21.10.2018, 15:55 3
T-SQL
1
2
DECLARE @Y INT=2017, @M INT=4;
SELECT CONVERT(CHAR(10),CAST(CAST(@Y*10000+@M*100+101 AS CHAR)AS DATE),102);
Покороче:
T-SQL
1
2
DECLARE @Y INT=2017, @M INT=4;
SELECT STUFF(STUFF(CAST(@Y*10000+@M*100+101 AS CHAR),7,0,'.'),5,0,'.');
Добавлено через 9 минут
Я неправ, ибо нельзя так просто прибавлять дни или месяцы.
Для декабря получится, конечно, ерунда.
Правильно так:
T-SQL
1
2
DECLARE @Y INT=2017, @M INT=12;
SELECT CONVERT(CHAR(10),DATEADD(MONTH,1,STR(@Y*10000+@M*100+1)),102);
1
dima-dima
1 / 1 / 3
Регистрация: 27.11.2012
Сообщений: 146
21.10.2018, 17:53  [ТС] 4
Только месяц+1 не нужно. Просто месяц.
0
21.10.2018, 17:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.10.2018, 17:53

Группировка по диапазону дат
не получается создать запрос на группировку по диапазону дат со счетчиком входов порльзователя ...

Сравнение дат в MSSQL7.0
Есть таблица в MSSQL, а в ней поле dt типа datettime. Выбираю данные например так: или так...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru