Я не могу найти ошибку в вашем выше запросе, но вот альтернативный способ, как вы могли бы написать запрос:
select top 1 COALESCE(CONVERT(nVARCHAR(50), EndTime, 103), '-') AS EndTime
from dbo.vwJobHistory
order by endtime desc
Update 1 (уточнение структуры таблицы):
В настоящее время неясно, хранятся ли ваши данные datetime в поле nvarchar (50) или если вы хотите, чтобы данные вашего дня и времени были переданы как nvarchar (50). Можете ли вы запустить следующий запрос и обновить свой вопрос с помощью результата?
SELECT
COLUMN_NAME, DATA_TYPE, col.CHARACTER_MAXIMUM_LENGTH
FROM INFORMATION_SCHEMA.COLUMNS col WHERE TABLE_NAME LIKE 'vwJobHistory'
Не могли бы вы также разместить ряд образцов из таблицы с помощью
SELECT endtime FROM dbo.vwJobHistory
Update 2 (преобразовать строку в DateTime, применять сортировку по конвертируется поле)
Взятые из ваш комментарий, кажется, ваши строки даты хранятся в формате SQL 109, поэтому давайте попробуем преобразовать nvarchar обратно в datetime, применить сортировку к нему и вывести результат:
SELECT * FROM (
SELECT
convert(datetime, EndTime, 109) endtimeconverted,
*
FROM vwJobHistory
) xyz
ORDER BY endtimeconverted DESC
MAX следует применять к DATE не для NVARCHAR –
Переместить 'MAX' перед' CONVERT'. Если у вас есть способность изменить тип вашего столбца «Endtime» соответствующим образом. –
@Adriano Я использовал MAX с самой датой .. – Emma