SQL DATEDIFF в операторе SELECT ')' Ошибка - PullRequest
1 голос
/ 21 января 2012

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

Проблема, кажется, что яЯ сталкиваюсь с DATEDIFF.Эти два поля (IS_RECEIVED_DATETIME + RESOLVED) являются полями Float(14) в базе данных.Поэтому я пытаюсь преобразовать поля, чтобы датировать их.В настоящее время я получаю ошибку ')' в строке, выделенной жирным шрифтом.сделал все, что я могу придумать, чтобы удалить а) и исправить ошибку, но все кажется закрытым и в нужном месте.Буду признателен за любые предложения или советы !!!!

И это мой первый пост здесь, поэтому, пожалуйста, дайте мне знать, если вам нужно больше информации, или я неправильно подаю это.Заранее спасибо!

Вот мой пример выбора оператора -

,DATEDIFF(Day,CONVERT(datetime,LEFT(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),4)+'/'+
SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),5,2) +'/'+
SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),7,2)+' '+
SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),9,2)+':'+
**SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),11,2)+':'+**
SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),13,2)+':'+) 
,CONVERT(datetime,LEFT(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),4)+'/'+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),5,2) +'/'+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),7,2)+' '+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),9,2)+':'+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),11,2)+':'+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),13,2))) as 'DURATION'

Ответы [ 2 ]

1 голос
/ 21 января 2012

В вашем утверждении слишком много + перед вторым преобразованием:

,DATEDIFF(Day,CONVERT(datetime,LEFT(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),4)+'/'+
SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),5,2) +'/'+
SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),7,2)+' '+
SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),9,2)+':'+
SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),11,2)+':'+
SUBSTRING(CAST(CAST(ISSUES.IS_RECEIVED_DATETIME as BIGINT) as VARCHAR(14)),13,2)+':') 
,CONVERT(datetime,LEFT(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),4)+'/'+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),5,2) +'/'+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),7,2)+' '+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),9,2)+':'+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),11,2)+':'+
SUBSTRING(CAST(CAST(ISSUES.IS_RESOLVED_DATETIME as BIGINT) as VARCHAR(14)),13,2))) as 'DURATION'

А теперь возьмите себе редактора, который сможет сделать пареню насквозь.

1 голос
/ 21 января 2012

Конкретная ошибка, которую вы получаете, связана с комбинацией '+)' в конце строки после той, которую вы отметили.

Есть ли лучший подход для выполнения того, что вы делаете, - это другой вопрос, на который мы могли бы ответить, если бы увидели содержимое ваших полей.

...