2013-05-14 6 views
1

В SQL Server 2008 R2 есть таблица с столбцом timestamp. Когда я только добавляю этот столбец в свою таблицу, я вижу такие значения, как этот 0x00000000000007D1. Я пытаюсь поставить в нее данные:Преобразование varchar в метку времени в SQL Server 2008 R2

UPDATE test_time SET date3= 
CONVERT(TIMESTAMP, CONVERT(datetime,'2002-08-20 14:00:00.000',120)) 
WHERE ogr_fid=1 

Но получить ошибки

Невозможно обновить временную метку столбца

Что здесь не так?

+0

http://stackoverflow.com/questions/4592658/sql-server-updating-a-time-stamp-column –

ответ

7

У datatype SQL Server TIMESTAMP есть ничего, чтобы сделать дату и время!

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

В любых версиях SQL Server это называется RowVersion - так как это действительно так. Смотрите MSDN docs on ROWVERSION:

ли тип данных, который предоставляет автоматически сгенерированные уникальные двоичные числа в базе данных. rowversion обычно используется как механизм для строк таблицы тиснения. Тип данных rowversion: только увеличительное число и не сохранить дату или время. Чтобы записать дату или время, используйте тип данных datetime2 .

Таким образом, вы не может преобразовать строку в TIMESTAMP в SQL Server.

+0

В другом программном обеспечении временная метка не такая же? –

+1

@KliverMax: в других системах баз данных 'timestamp' действительно используется для даты и времени. Но для SQL Server это не так. –

+0

Okey, спасибо) –

Смежные вопросы