SQL Server: Поставьте в тупик дату в SQL-сервере, но останьтесь детерминированными

Изначально не было ясно, что вы имели в виду:

анимировать div # box-2 вверх при щелчке

blockquote>

Теперь, когда вы спросили чтобы на самом деле переместить #box-2 в верхнюю часть экрана (что я буду интерпретировать как «физически выше» #box-1), я отошлю вас к этому коду:

$("#box-2").on("click", function(){
    $('#box-2:parent').each(function () {
        $(this).insertBefore($(this).prev('#box-1'));
    });
});
[ 118] На что ответили здесь: Поменяйте местами 2 деления с помощью jQuery

6
задан Community 23 May 2017 в 12:23
поделиться

5 ответов

Мое предположение - то, что это - ошибка некоторых видов. В SQL 2005 я смог создать такое индексное представление без проблемы (код ниже). Когда я пытался выполнить его на SQL 2000, хотя я получил ту же ошибку, как Вы добираетесь.

Следующее, кажется, работает над SQL 2000, но я получаю предупреждение, что индекс будет проигнорирован, И необходимо было бы преобразовать каждый раз, когда Вы выбрали из представления.

CONVERT(CHAR(8), datetime_column, 112)

Работы в SQL 2005:

CREATE TABLE dbo.Test_Determinism (
    datetime_column DATETIME    NOT NULL    DEFAULT GETDATE())
GO

CREATE VIEW dbo.Test_Determinism_View
WITH SCHEMABINDING
AS
    SELECT
        DATEADD(dd, DATEDIFF(dd, 0, [datetime_column]), 0) AS EffectiveDate
    FROM
        dbo.Test_Determinism
GO

CREATE UNIQUE CLUSTERED INDEX IDX_Test_Determinism_View ON dbo.Test_Determinism_View (EffectiveDate)
GO
3
ответ дан 17 December 2019 в 00:16
поделиться

Попробуйте это:

CAST(FLOOR(CAST([datetime_column] as FLOAT)) AS DateTime)

Это должно пойти намного быстрее, чем опция CONVERT.

1
ответ дан 17 December 2019 в 00:16
поделиться

Ваш столбец [datetime_column] значение по умолчанию установили на "getDate ()"??

Если так, с тех пор getdate () функция недетерминирована, это вызовет эту ошибку...

Детерминирована ли пользовательская функция, или недетерминированный зависит от того, как функция кодируется. Пользовательские функции детерминированы если:

  1. Функция связана со схемой.
  2. Все встроенные или пользовательские функции, вызванные пользовательской функцией, детерминированы.
  3. Тело ссылок на функцию никакие объекты базы данных вне объема функции. Например, детерминированная функция не может сослаться на таблицы кроме табличных переменных, которые локальны для функции.
  4. Функция не называет расширенных хранимых процедур.

Пользовательские функции, которые не соответствуют этим критериям, отмечены как недетерминированные. Встроенные недетерминированные функции не позволяются в теле пользовательских функций.

2
ответ дан 17 December 2019 в 00:16
поделиться

Я предложил бы несколько simplier:

 cast(cast([datetime_column] as int) as datetime)

но я подозреваю, что Вы столкнетесь с той же проблемой.

Теперь, если проблема находится во вспоминании к дате и времени, Вы могли бы хотеть рассмотреть использование просто cast([datetime_column] as int) как отдельное поле, только для индекса.

0
ответ дан 17 December 2019 в 00:16
поделиться

Посмотрите на тот вопрос, который спрашивают и отвеченный Заправкой для соуса Бочонка. Возможно, решение состояло бы в том, чтобы создать использование функции С SCHEMABINDING и затем использовать его в вычисляемом столбце

Править

Я понимаю, что цель необходимо смочь иметь индекс на том столбце.

Если бы это не может быть сделано с вычисляемым столбцом затем, возможно, единственная опция состояла бы в том, чтобы создать обычный столбец и изменить данные в том столбце каждый раз, когда Вы обновляете тот, на основе которого это. (скажите в триггере),

0
ответ дан 17 December 2019 в 00:16
поделиться
Другие вопросы по тегам:

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