Функция Datediff в T-sql

Попробуйте следующее:

   var myDouble = myString.bridgeToObjectiveC().doubleValue
   println(myDouble)

ПРИМЕЧАНИЕ

Удалено в бета-версии 5. Это больше не работает?

-1
задан a_horse_with_no_name 5 March 2019 в 12:33
поделиться

2 ответа

отсюда https://docs.microsoft.com/en-us/sql/t-sql/functions/datediff-transact-sql?view=sql-server-2017

[ 110]

, поэтому 14 следует указать дату начала . Посмотрите пример , потому что добавлять только 14 не имеет смысла, это должна быть дата, например

SELECT DATEDIFF(week, '2005-12-31 23:59:59.9999999', '2006-01-01 00:00:00.0000000');
0
ответ дан svkaka 5 March 2019 в 12:33
поделиться

Как написал svkaka в своем ответе, функция DATEDIFF ожидает datepart, дату начала и дату окончания - тем не менее, ваш код предоставляет ему int в качестве второго аргумента.
В таких случаях SQL Server неявно преобразует int в DateTime, поэтому

SELECT DATEDIFF(wk, 14, GetDate())

фактически

SELECT DATEDIFF(wk, '1900-01-15', GetDate())

, поскольку приведение 14 к DateTime приведет к этой дате .
Обратите внимание, однако, что ни один из других типов данных Дата / Время не может быть напрямую преобразован из целого.

Это основа метода, который использовался в более старых версиях SQL Server для усечения частей значения DateTime.
Например, если вы хотите обрезать временную часть в версии 2005 года, вы должны сделать это:

SELECT DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()), 0) -- 0 meaning January 1st 1900

(в 2008 году вы просто приводили к date).

Однако в более новых версиях SQL Server (на самом деле, с 2012 года введено datefromparts и его родственные функции) эта методика больше не нужна.

0
ответ дан Zohar Peled 5 March 2019 в 12:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: