Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: SQL-запрос

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию SQL-запрос

    День добрый. Подскажите, как можно реализовать изменение дат выборки в запросе по протоколу MSSQL, чтобы получать значения за разные даты. Данные нужны именно в виде массива. Пробовал реализовать помощью функций работы со строками ни чего не вышло.
    Есть структура из 11 элементов ну и сам запрос.

    SELECT TOP (1000)
    ,[DateTime]
    ,[T1]
    ,[P1]
    ,[M1]
    ,[T2]
    ,[P2]
    ,[M2]
    ,[MTV]
    ,[WTV]
    ,[W1]
    ,[W2]
    FROM [VKTBase].[dbo].[20_1_1_2] where DateTime between '2024-01-02 00:00:00' and '2024-02-02 00:00:00'

  2. #2

    По умолчанию

    Может так:
    where DateTime >= '2024-01-02 00:00:00' AND DateTime < '2024-02-02 00:00:00' OR DateTime >= '2024-02-02 00:00:00' AND DateTime < '2024-03-02 00:00:00' OR DateTime >= '2024-03-02 00:00:00' AND DateTime < '2024-04-02 00:00:00' и т.д.

  3. #3

    По умолчанию

    Я думаю, может есть способ через замену дат переменными.

  4. #4

    По умолчанию

    Цитата Сообщение от Enigma Посмотреть сообщение
    Я думаю, может есть способ через замену дат переменными.
    Тогда надо впереди запроса declare делать и пр. Как в обычном sql...

  5. #5

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Тогда надо впереди запроса declare делать и пр. Как в обычном sql...
    А как можно связать переменную объявленную в SQL-запросе с параметром в MS4D?

    Я попытался реализовать это так, но запрос не выполняется и ошибка не пишется.
    SQL.png

  6. #6

    По умолчанию

    Цитата Сообщение от МихаилГл Посмотреть сообщение
    Тогда надо впереди запроса declare делать и пр. Как в обычном sql...
    В SQL нет никаких "declare". И быть не может, поскольку это не процедурный язык.

  7. #7

    По умолчанию

    Цитата Сообщение от imaex Посмотреть сообщение
    В SQL нет никаких "declare". И быть не может, поскольку это не процедурный язык.
    Ничего не понял...
    Код:
    IF EXISTS (SELECT TOP (1) * FROM [RSnew].[dbo].[DBData] WHERE ([StatusStop] = 0))
    BEGIN
    UPDATE [RSnew].[dbo].[DBData]
    SET [DateTimeStart] = GETDATE(), [DateTimeStop] = GETDATE(), [StatusStart] = 1
    WHERE [StatusStop] = 0
    END
    ELSE IF NOT EXISTS (SELECT TOP (1) * FROM [RSnew].[dbo].[DBData] WHERE ([StatusStart] = 1) and ([StatusStop] = 0))
    BEGIN
    declare
    	@String1 varchar(30),
    	@String2 varchar(30),
    	@String3 varchar(30),
    	@String4 varchar(30)
    select
    	@String1 = [String1],
    	@String2 = [String2],
    	@String3 = [String3],
    	@String4 = [String4]
    from
    	[RSnew].[dbo].[DBInfo]
    INSERT INTO [RSnew].[dbo].[DBData] ([DateTimeStart], [DateTimeStop], [StatusStart], [StatusStop], [String1], [String2], [String3], [String4])
    VALUES (GETDATE(), GETDATE(),  1,  0, @String1, @String2, @String3, @String4)
    END
    Я конечно не спец, но вот пример sql запросов которые я использую.
    И как я помню я похожее вводил в MS4D и все работало пол года назад... Только для переменных там свои особенности были.

    PS Вот из документации:
    Код:
    Синтаксис запросов для работы с базами данных
    Есть два способа вставки данных в запрос:
    •текст запроса {ИмяКанала} текст запроса..
    •текст запроса {$ИмяКанала} текст запроса..
    {CH} Данные и запрос передаются раздельно и "объединение" происходит на сервере БД.
    Плюсы:
    
    •Защита от SQL-"инъекций"
    
    •Выполнение запроса происходит немного быстрее
    
    Минусы:
    
    •Не во все части sql запроса можно вставить. Например, сервер БД не позволит выполнить такой запрос: select {CH1} from {CH2}
    
    {$CH} Данные из каналов напрямую вставляются в тело запроса в момент отправки на сервер.
    Плюсы:
    
    •Можно динамизировать запросы, т.е. писать запросы вида: select {$CH1} from {$CH2} where {$CH3} = {CH4}
    
    Минусы:
    
    •Подстановка происходит как есть, без экранирования спецсиволов. Если в CH1 будет текст вида 1; DROP TABLE test; select 1он отправится на сервер и успешно там выполнится
    Может про это?
    Последний раз редактировалось МихаилГл; 09.10.2024 в 13:19.

  8. #8

    По умолчанию

    Не знаю. Может надо ещё форматировать переменную к виду в базе. Я с MS4D мало работал, почти не работал. Но вроде запросы там можно как в sql оформлять со всеми параметрами tsql. Я вот о чем.

  9. #9

    По умолчанию

    Появился еще вопрос. При выполнении подобных "динамизированных" запросов у меня остаются "паразитные" элементы в массиве от предыдущего запроса. Появляются в случае если элементов в ответе было меньше чем в предыдущем.
    Первый запрос:1 запрос.jpg
    Второй запрос:2 запрос.jpg
    Третий запрос:3 запрос.jpg
    Пробывал подключать/выполнять по условию безрезультатно.

  10. #10

    По умолчанию

    Цитата Сообщение от Enigma Посмотреть сообщение
    Появился еще вопрос. При выполнении подобных "динамизированных" запросов у меня остаются "паразитные" элементы в массиве от предыдущего запроса. Появляются в случае если элементов в ответе было меньше чем в предыдущем.
    Первый запрос:1 запрос.jpg
    Второй запрос:2 запрос.jpg
    Третий запрос:3 запрос.jpg
    Пробывал подключать/выполнять по условию безрезультатно.
    Я бы пока не нашёл бы правильного решения сделал бы костыль... Заполнил бы всё сначала null, а потом рабочий запрос послал. А так даже не знаю как это решить. Должна где-то быть очистка перед записью. Может в st коде очищать перед запросом.

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  1. HTTP запрос на СПК107
    от mapleBear в разделе СПК1xx (архив)
    Ответов: 2
    Последнее сообщение: 28.07.2022, 20:41
  2. запрос новичка
    от Ходжа в разделе Программируемые реле
    Ответов: 14
    Последнее сообщение: 27.08.2019, 12:28
  3. как правильно оформить GET запрос
    от Brandon_heat_dre в разделе ПЛК1хх
    Ответов: 15
    Последнее сообщение: 25.08.2019, 18:02
  4. запрос архивного файла по 485
    от Антон12345 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 04.03.2010, 14:33
  5. Запрос ТРМ-201
    от hilih в разделе Помощь Разработчикам
    Ответов: 1
    Последнее сообщение: 13.04.2009, 11:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •