2010-05-26 2 views
0

Une colonne Timestamp (rowversion) dans une table SQL Server peut-elle être interrogée? Si c'est le cas, comment?Colonne d'horodatage - Peut-elle être interrogée?

Je voudrais faire quelque chose comme ceci:

Select * From MyTable Where MyTimestampColumn = "???" 

Mais ne suis pas sûr de ce que pour mettre en « ??? »

Remerciements - Randy

+0

Pourriez-vous expliquer quel problème vous essayez de résoudre plutôt que comment vous essayez de le résoudre? Quel genre de requête essayez-vous d'écrire? Que devrait-il faire? Quelles sont vos données? Quel résultat attendez-vous? –

+0

@Mark Byers - C'est un peu compliqué mais il suffit de dire que je veux simplement rechercher une colonne Timestamp pour une valeur spécifique. –

Répondre

3

Le type de données timestamp est équivalent à binary(8). Vous pouvez interroger contre:

create table #t (somecolumn varchar(64), mytimestampcolumn timestamp) 

insert into #t (somecolumn) select 'hello world' 
insert into #t (somecolumn) select 'foo' 
select * from #t where mytimestampcolumn = 0x0000000000000978 -- this value will vary 

drop table #t 

Notez que l'horodatage a été dépréciée dans Sql Server 2008. Dans les versions précédentes de SQL Server (2005, 2000), rowversion est synonyme de timestamp pour aider à la migration future.

0

Oui. C'est effectivement binary(8).

Pourquoi l'utiliser autrement? C'est seulement l'utilisation est de détecter d'autres changements à une ligne sur UPDATE. Sinon, vous devez tester toutes les colonnes de la ligne pour les modifications. MS Access repose surtout sur pour concurrency

0

Une colonne d'horodatage SQL Server est pour le versioning de ligne, et ne se rapporte pas à temps (http://msdn.microsoft.com/en-us/library/ms182776.aspx)

Cependant, il est souvent demandé (explicitement ou implicitement) dans concurrency vérifier le code pour les applications multi-utilisateurs.

Questions connexes