Поскольку вы используете AndroidX, ваш XML ссылается на неправильную версию SwipeRefreshLayout
. Изменения в вашем XML с android.support.v4.widget.SwipeRefreshLayout
на androidx.swiperefreshlayout.widget.SwipeRefreshLayout
Согласно записи BOL в DATEDIFF (раздел arguments ) для SQL Server 2005,
Эти даты и сокращения не могут быть предоставлены как пользователь -declared переменная.
Так что вы, вероятно, застряли с Dynamic SQL или с помощью оператора CASE. Но я бы выбрал версию CASE вместо динамического SQL.
Единственное, что вы действительно можете сделать, кроме предложенного динамического оператора sql или case, - это всегда делать датировку в гранулированном DatePart и затем преобразовывать с повышением. Это не является надежной проверкой, однако, вы получите переполнение в функции, если попытаетесь использовать datediff для детализации детали на слишком большом промежутке, например, datediff (second, 0, getdate ()). Но если вам просто нужно что-то вроде мелких частей, у вас все будет в порядке (перепроверьте с максимальными значениями даты, которые вас интересуют).
Так, например,
select datediff(minute, 0, getdate())
Если я хочу преобразовать это в часы, дни и т. Д., Я могу просто разделите результат на соответствующую сумму. Это не будет учитывать високосные годы и т. Д.
Я не думаю, что есть лучшие способы, чем вы описываете. Sql Server, вероятно, компилирует запрос DATEDIFF в набор операций, которые зависят от параметра datepart. Поэтому вам нужен CASE или динамические запросы.