Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разделение по месяцу / 15 сообщений из 15, страница 1 из 1
20.09.2021, 07:32
    #40098586
Ablaykhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
Здравствуйте, у меня есть таблица [dbo].[БД$] у нее есть столбец [Дата] мне нужно разделить дату на месяцы, и на дни месяца.

Тип столбца [Дата] = datetime,NULL (2017-07-14 00:00:00.000)

Я написал такой запрос:

Код: sql
1.
2.
3.
4.
SELECT *
	,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 1, 4) AS [ГОД]
	,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 7, 8) AS [МЕС]
FROM [dbo].[БД$]


[ГОД] он выдает корректно, а вот [МЕС] почему то некорректно. На выходе должно было получиться "7" но выдает "7-14 00" часть времени цепляет. Можете подсказать в чем проблема.
...
Рейтинг: 0 / 0
20.09.2021, 07:38
    #40098589
Ablaykhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
Ablaykhan,

Код: sql
1.
2.
3.
4.
5.
SELECT *
	,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 1, 4) AS [ГОД]
	,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 7, 1) AS [МЕС]
	,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 9, 3) AS [ДЕНЬМЕС]
FROM [dbo].[БД$]



Вопрос закрыт
...
Рейтинг: 0 / 0
20.09.2021, 11:33
    #40098626
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
Ablaykhan,

откройте для себя функцию datepart

Код: sql
1.
2.
3.
4.
declare @dt datetime = getdate()
select datepart(yy,@dt) [Year]
         ,datepart(mm,@dt) [Month]
	,datepart(dd,@dt) [Day]
...
Рейтинг: 0 / 0
20.09.2021, 11:45
    #40098631
Ablaykhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
komrad,

спасибо, хорошо
...
Рейтинг: 0 / 0
20.09.2021, 12:32
    #40098649
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
Ablaykhan,

,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 7, 1) AS [МЕС]

а как же октябрь, ноябрь и декабрь? deprecated? и вместо них будут два января и два февраля и один непонятный с номером 0. январские каникулы видимо..
или "выборка не подразумевает наличия такой информации"
а еще "задача не ставилась"
...
Рейтинг: 0 / 0
20.09.2021, 12:59
    #40098659
Ablaykhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
ShIgor,

Вы кажется не поняли задачу.
...
Рейтинг: 0 / 0
20.09.2021, 13:43
    #40098669
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
Ablaykhan
ShIgor,

Вы кажется не поняли задачу.
Я тоже не понял: что вы будете делать с полученным результатом?
Просто где-то выводить? Или, например, группировать (GROUP BY)?
...
Рейтинг: 0 / 0
20.09.2021, 15:17
    #40098703
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
Ablaykhan,

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

а вот Ваше же решение можно применить только в случае если месяц в дате меньше 10, в противном, результат будет не равен номеру месяца. Да и Дата будет "хватать" лишний пробел.
...
Рейтинг: 0 / 0
21.09.2021, 06:33
    #40098835
Ablaykhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
ShIgor,

Кстати да, я вот только заметил. А как написать запрос так чтобы он брал все 12 месяцев?
...
Рейтинг: 0 / 0
21.09.2021, 06:47
    #40098839
Ablaykhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
iap,

Это базовые столбцы для daily отчетов.
Я тут заметил что мой запрос выводит результат неправильно. Как выше писали мой запрос берет лишь до 10 месяцев. А именно где должно выводиться 10 он выводит 0 а там где 11 он выводит 1 а там где 12 выводит 2. Как можно решить эту проблему? Спасибо за ответ.
...
Рейтинг: 0 / 0
21.09.2021, 06:52
    #40098843
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
Ablaykhan
Как можно решить эту проблему? Спасибо за ответ.


Варианты
1. Подучиться.
2. Подумать.
3. Почитать ответы умных людей.

komrad
Ablaykhan,

откройте для себя функцию datepart

Код: sql
1.
2.
3.
4.
declare @dt datetime = getdate()
select datepart(yy,@dt) [Year]
         ,datepart(mm,@dt) [Month]
	,datepart(dd,@dt) [Day]

...
Рейтинг: 0 / 0
21.09.2021, 07:01
    #40098844
Ablaykhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
aleks222,

SELECT *
,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 1, 4) AS [ГОД]
,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 6, 2) AS [МЕС]
,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 9, 3) AS [ДЕНЬМЕС]
FROM [dbo].[БД$]
Я поменял лимит на 6,2 выводит все корректно.
...
Рейтинг: 0 / 0
21.09.2021, 07:04
    #40098846
Ablaykhan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
Ablaykhan
aleks222,

Код: sql
1.
2.
3.
4.
5.
SELECT *
	,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 1, 4) AS [ГОД]
	,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 6, 2) AS [МЕС]
	,SUBSTRING((CONVERT(VARCHAR, [Дата], 120)), 9, 3) AS [ДЕНЬМЕС]
FROM [dbo].[БД$] 


Я поменял лимит на 6,2 выводит все корректно.
...
Рейтинг: 0 / 0
21.09.2021, 07:39
    #40098856
asdor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
Ablaykhan,
Наверное смысла нет, в 3й раз повторять.
ТС ответов не читает.
Но попробую)))
aleks222
Ablaykhan
Как можно решить эту проблему? Спасибо за ответ.


Варианты
1. Подучиться.
2. Подумать.
3. Почитать ответы умных людей.

komrad
Ablaykhan,

откройте для себя функцию datepart

Код: sql
1.
2.
3.
4.
declare @dt datetime = getdate()
select datepart(yy,@dt) [Year]
         ,datepart(mm,@dt) [Month]
	,datepart(dd,@dt) [Day]

...
Рейтинг: 0 / 0
21.09.2021, 09:56
    #40098885
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделение по месяцу
asdor
Ablaykhan,
Наверное смысла нет, в 3й раз повторять.
ТС ответов не читает.
Но попробую)))
aleks222
пропущено...


Варианты
1. Подучиться.
2. Подумать.
3. Почитать ответы умных людей.

пропущено...

и есть еще функции
YEAR, MONTH, DAY
Код: sql
1.
2.
3.
4.
declare @dt datetime = getdate()
select   year(@dt) [Year]
		,month(@dt) [Month]
		,day(@dt) [Day]


может быть будет более наглядно автору
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разделение по месяцу / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]