Как использовать метку времени в качестве параметра - PullRequest
0 голосов
/ 03 июля 2018

У меня есть простой запрос, который я часто использую, чтобы получить все весовые данные на определенной производственной линии в течение определенного периода времени.

Теперь я хочу преобразовать свой запрос в визуальный отчет студии, чтобы другие люди могли запустить отчет вместо того, чтобы спрашивать меня.

В качестве первого шага я пытаюсь запустить запрос в Management Studio, чтобы посмотреть, работает ли он.

DECLARE @ProductionLineID as int
Set @ProductionLineID = 11
DECLARE @Start as timestamp
Set @Start = '2018-06-29 19:20'
DECLARE @End as timestamp
Set @End = '2018-06-30 19:10' 

SELECT [ProductionLineId]
      ,[Timestamp]
      ,[ActiveRecipe]
      ,[ActualWeight]
      ,[SetWeight]
      ,[SetBoxWeight]
      ,[SetMaxTolerance]
      ,[SetMinTolerance]
      ,[DeviationFromSetWeight]
      ,[AmountOfProductInBox]
      ,[AverageProductWeightPerBox]
      ,[ActualSealTemp]
      ,[ActualCuttingTemp]
      ,[ParametersChanged]
      ,[rejectError]
  FROM [PP_Staging].[NIV].[Packaging]

  where ProductionLineId = @ProductionLineID
  and timestamp between @Start and @End

  order by Timestamp

Это приводит к следующей ошибке

Msg 257, Level 16, State 3, Line 5
Implicit conversion from data type varchar to timestamp is not allowed. Use the CONVERT function to run this query.
Msg 257, Level 16, State 3, Line 7
Implicit conversion from data type varchar to timestamp is not allowed. Use the CONVERT function to run this query.

Итак, я попробовал функцию преобразования в соответствующей части:

DECLARE @Start as timestamp
Set @Start = convert(timestamp, '2018-06-29 19:20')
DECLARE @End as timestamp
Set @End = convert(timestamp, '2018-06-30 19:10')

Что приводит к

Msg 8115, Level 16, State 2, Line 9
Arithmetic overflow error converting expression to data type datetime.

Итак, первый вопрос: как мне ввести / установить этот параметр, чтобы я мог проверить отчет?

Я знаю, что мой код работает, если я ввожу его вручную, поэтому я в основном ищу способ преобразования этого ручного запроса в отчет с переменными. Получив это, я могу попытаться выяснить, как настроить отчет.

Пример рабочего кода:

SELECT [ProductionLineId]
      ,[Timestamp]
      ,[ActiveRecipe]
      ,[ActualWeight]
      ,[SetWeight]
      ,[SetBoxWeight]
      ,[SetMaxTolerance]
      ,[SetMinTolerance]
      ,[DeviationFromSetWeight]
      ,[AmountOfProductInBox]
      ,[AverageProductWeightPerBox]
      ,[ActualSealTemp]
      ,[ActualCuttingTemp]
      ,[ParametersChanged]
      ,[rejectError]
  FROM [PP_Staging].[NIV].[Packaging]

  where ProductionLineId = 11
  and timestamp between '2018-06-29 19:20' and '2018-06-30 19:10'

  order by Timestamp

1 Ответ

0 голосов
/ 03 июля 2018

Проверьте определение [PP_Staging]. [NIV]. [Упаковка]. Я думаю, вы обнаружите, что тип данных для метки времени на самом деле DATETIME или DATETIME2. Затем измените объявления переменных, как показано ниже.

DECLARE @ProductionLineID as int
Set @ProductionLineID = 11
DECLARE @Start as DATETIME
Set @Start = '2018-06-29 19:20'
DECLARE @End as DATETIME
Set @End = '2018-06-30 19:10' 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...