Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Фильтр по CurrentDate минус 30 days по возрастанию до текущей даты / 3 сообщений из 3, страница 1 из 1
23.04.2020, 13:14
    #39950431
Vikonder
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по CurrentDate минус 30 days по возрастанию до текущей даты
Камрады!

Есть довольно большая таблица MS SQL из которой мне нужно выбирать каждый день последние данные за месяц,
т.е. фильтр должен содержать StartTime >= CurrentDay - 30

Формат даты вот в таком виде:

runid OptimalVersion TestEnvironment StartTime Total Time E2E1058 7.4.4340.0 QAPerformanceVertica 2020-04-23:075849 50.7
Рытался сдалать вот так:
Код: sql
1.
2.
3.
4.
5.
6.
select [runid], [OptimalVersion] ,[TestEnvironment] ,[StartTime] ,[TestName] ,[Total Time E2E], 
                 from [PerformanceResults].[dbo].[BenchmarkTestsSummary] 
		 where TestEnvironment='QAPerformanceVertica'  and OptimalVersion like '7.4%' AND 
		 StartTime >= CAST(DATEPART(yyyy,getdate()) AS VARCHAR(4))+'-'+ DATEPART(year, DATEADD(DAY, -30, GETDATE()))
		 and TestName = 'Scenario1'
order by StartTime 


Conversion failed when converting the varchar value '2020-' to data type int.

Думал сделать проще через TOP (30), но вот тут загвоздка
- если делать DESC, то выдает с текущей даты - 30 в обратном порядке
- если делать напрямую, то берется 30 записей из конца таблицы

Как сделать, чтобы сортировка НЕ была обратной

StartTime2020-03-232020-03-242020-03-25.....2020-04-23
...
Рейтинг: 0 / 0
23.04.2020, 13:24
    #39950439
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по CurrentDate минус 30 days по возрастанию до текущей даты
А что на этот вопрос отвечает тот, кто придумал хранить даут время кривой строкой, а не в соответствующем типе данных?
...
Рейтинг: 0 / 0
23.04.2020, 15:35
    #39950548
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фильтр по CurrentDate минус 30 days по возрастанию до текущей даты
Vikonder
Думал сделать проще через TOP (30), но вот тут загвоздка
- если делать DESC, то выдает с текущей даты - 30 в обратном порядке
- если делать напрямую, то берется 30 записей из конца таблицы

Как сделать, чтобы сортировка НЕ была обратной
Так вам нужно просто взять топ 30?

Выберите TOP (30) DESC в подзапросе, а потом этот результат ASC снаружи


Vikonder
Conversion failed when converting the varchar value '2020-' to data type int.
А ошибка у вас из за того, что вы неправильно сделали конвертацию.
Попробуйте выполнить:
Код: sql
1.
2.
3.
select CAST(DATEPART(yyyy,getdate()) AS VARCHAR(4))+'-'+ DATEPART(year, DATEADD(DAY, -30, GETDATE()))
Msg 245, Level 16, State 1, Line 17
Conversion failed when converting the varchar value '2020-' to data type int.


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


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