SQL Server Расчет разницы двух dbtimes

Я хочу рассчитать разницу dbtime. Что я здесь делаю неправильно?

Declare @StartTime as Date
Declare @FinishTime as Date

set @StartTime = (select dbtime from table1
                  where detail like 'started:Jan 31 2019')

set @FinishTime = (select dbtime from table1
                   where detail like 'finished. Jan 31 2019')

select datediff(ss, @StartTime, @FinishTime) as ExecutionTime

Какую ошибку вы получаете? Какую базу данных вы используете? Неверные значения? В вашем вопросе недостаточно информации.

Gordon Linoff 03.02.2019 14:17

Использование DATE вместо DATETIME? какое точное сообщение об ошибке?

Lukasz Szozda 03.02.2019 14:17

Вы определили переменные типа DATE, то есть просто ДАТА, без временной части. Таким образом, вы не можете получить разницу в секундах от этих... Вместо этого используйте DATETIME2(0) - ЕСЛИ столбец dbtime в вашем table1 также имеет тип DATETIME или DATETIME2.

marc_s 03.02.2019 14:32
Что я здесь делаю неправильно? на самом деле не является вопросом, потому что мы не знаем, какие там типы данных, мы не знаем, получите ли вы ошибку или что происходит, или даже если это даст вам неправильные результаты. Пожалуйста, прочтите Как создать минимальный, полный и проверяемый пример.
Ilyes 03.02.2019 14:47

Сообщение об ошибке будет выглядеть примерно так: «значение ss datepart недопустимо для даты типа данных». Вам нужно изменить типы данных на datetime,

Salman A 03.02.2019 15:13

Поскольку declare @Start as Date = '2010-01-01', @End as Date = '2010-01-02'; select DateDiff( second, @Start, @End ); работает, пытаетесь ли вы получить разницу, превышающую размер int? Или это что-то совершенно другое, например, подзапрос, возвращающий более одного значения? В стороне: вы можете использовать select @StartTime = dbtime from table1 where detail like 'started:Jan 31 2019'; вместо set. Вы также можете получить несколько значений из одного запроса.

HABO 03.02.2019 15:26
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
6
61
1

Ответы 1

Попробуйте с типами DATETIME.

И выборки для этих переменных должны возвращать только одно значение.
Ф.э. используя MAX, MIN или TOP 1 & ORDER BY.

declare @StartTime DATETIME;
declare @FinishTime DATETIME;
declare @SecondsBetweenStartAndFinish INT;

set @StartTime = (select MAX(dbtime) from table1
                  where detail like 'started%Jan 31 2019%');

set @FinishTime = (select MAX(dbtime) from table1
                   where detail like 'finished%Jan 31 2019%');

set @SecondsBetweenStartAndFinish = datediff(second, @StartTime, @FinishTime);

select @SecondsBetweenStartAndFinish as ExecutionTime;

Другие вопросы по теме