Рейтинг:
7
MadMyche
Строка 1: ограничивает результаты до 100 строк
Строка 2: вычитание одного DateTime из другого дает вам новый объект DateTime... Вы поняли, что ваши данные вернутся 1900-01-09 05:43:17.000 когда вы делаете это таким образом? Используйте DateDiff
функция, чтобы дать вам единицу для работы (в данном случае минуты). Этот метод с вашими данными возвращает 11864
Строка 4: Используйте WHERE
чтобы ограничить ваши возвраты только теми, где разница в минутах больше 2.
Строка 5: Используйте ORDER BY
чтобы установить, по какому столбцу они будут отсортированы.
Обратите внимание, что я удалил оператор CASE; он действительно не нужен для функциональности
SELECT TOP (100) AddedToQueue, LastStatusUpdate
, Difference = DateDiff(mi,LastStatusUpdate, AddedToQueue)
FROM PrintQueue
WHERE DATEDIFF(mi, AddedToQueue, LastStatusUpdate) > 2
ORDER BY AddedToQueue
[no name]
@MadMyche, мне понравился ваш запрос, он дает мне то, что я хотел с простым объяснением, не могли бы вы сказать мне, в чем разница между вашим запросом и следующим запросом :
Выберите TOP 100 * из PrintQueue, где DATEDIFF(n, AddedToQueue, LastStatusUpdate) > 2
Заказ по AddedToQueue
вопрос в чем разница между Difference и Datediff ?
MadMyche
Разница между запросом, который я предоставил, и
SELECT TOP 100 * FROM...
заключается ли это в том, что мой запрос возвращает только 2 столбца DateTime и добавляет третий столбец, который является разница 2 даты и времени.
вопрос в чем разница между Difference и Datediff ?
Разница это просто имя, которое я дал новому столбцу, равному функции DateDiff. Ваш первоначальный вопрос имел
LastStatusUpdate - AddedToQueue AS Difference
и вот тут-то я все и придумал.
Эти две линии являются функциональными эквивелантами
Difference = DateDiff(mi,LastStatusUpdate, AddedToQueue)
DateDiff(mi,LastStatusUpdate, AddedToQueue) as Difference
это можно использовать для присвоения имени (или переименования, он же псевдоним) значению в запросе. Я предпочитаю использовать
[NewName] = формула особенно в запросах lonq которые охватывают много строк так как мне легче читать когда код отформатирован
[no name]
еще один вопрос, пожалуйста ... если я хочу дать переменную в качестве параметров, таких как next Ex :
Скрыть Код Скопировать
объявить @month int
объявить @year int
set @month = 6
set @year = 2019
выберите топ 1 имя принтера
из PrintQueue
где месяц(AddedToQueue) = @месяц и год (AddedToQueue)=@год
группа по имени принтера
заказ по количеству(имя принтера) desc
даже чтобы иметь возможность менять год и месяц ... правильно ли я поступила ?!
[no name]
О боже, большое спасибо за то, что ты мне все объяснил .
Рейтинг:
20
OriginalGriff
SELECT TOP 100 ... CASE WHEN DATEDIFF(mi, LastStausUpdate, AddedToQueue) > 2 THEN ...
ORDER BY ...
Вам нужен порядок ПО или SQL может использовать любые критерии, которые ему нравятся, чтобы выбрать, какие строки отображать.
[no name]
@OrginalGriff, спасибо за ваш ответ, но так же, как и я
Выберите топ-100 случаев, когда DATEDIFF(mi, LastStatusUpdate, AddedToQueue) > 2
От ДБО.Очередь печати;
это не работает .. извините, я новичок в SQL .
OriginalGriff
"это не работает" ничего нам не говорит!
Что он сделал такого, чего вы не ожидали, или не сделали того, что вы сделали?
Помните, что мы не можем видеть ваш экран, получить доступ к вашему жесткому диску или прочитать ваши мысли - мы получаем только то, что вы печатаете для работы.
[no name]
- Благодарю вас .. у меня есть решение . вы мне помогли