За последние 24 часа нас посетили 22999 программистов и 1227 роботов. Сейчас ищут 730 программистов ...

Ошибка конверсии при преобразовании даты и/или времени

Тема в разделе "MSSQL", создана пользователем Feonix89, 4 июн 2018.

  1. Feonix89

    Feonix89 Новичок

    С нами с:
    30 май 2018
    Сообщения:
    113
    Симпатии:
    2
    Здравствуйте подскажите пожалуйста. Сделал следующее:
    1) есть таблица manufactures(created_at - datetime) (по умолчанию заполняется getdate());
    2) есть таблица manufactures_log(created_at - datetime) (по умолчанию заполняется getdate());
    3) и есть тригер такого содержания (на изменение)
    /*UPDATE*/
    INSERT INTO [manufactures_log] (old_id, table_id, created_by, created_at, type_of_change, name)
    SELECT
    a.[id] [table_id],
    (SELECT TOP 1 [id] FROM manufactures_log WHERE [table_id] = a.[id] ORDER BY [id] DESC) [old_id],
    a.[name] [name],
    @uname [created_by],
    GETDATE() [created_at],
    'update' [type_of_change]
    FROM inserted a
    LEFT JOIN deleted b
    ON b.[id] = a.[id]
    WHERE
    a.[name]<>b.[name]
    OR (a.[name] IS NULL AND b.[name] IS NOT NULL)
    OR (a.[name] IS NOT NULL AND b.[name] IS NULL)
    AND b.[id] IS NOT NULL

    Тригер работает на добавление запись создается, но когда я пытаюсь изменить ее в БД выходит ошибка:conversion failed when converting date and/or time from character string

    Подсажите, как можно исправить эту проблему?
     
  2. Feonix89

    Feonix89 Новичок

    С нами с:
    30 май 2018
    Сообщения:
    113
    Симпатии:
    2
    проблема решилась следующим образом: порядок файлов INSERT INTO [manufactures_log] (old_id, table_id, created_by, created_at, type_of_change, name) не нужно нарушать в SELECT, т.е. SELECT выводим в таком же порядке как и указано в скобках.
    (select)[old_id
    a.[id] [table_id]
    @uname [created_by] и т.д.