horodatage et date-heure

J'ai une table avec deux colonnes la première colonne est un timestamp (currentdate) et l'autre est une colonne datetime (dateReturn) .ii faut faire la différence entre currentdate et dateReturn du nombre de jours.est-ce possible?

Non, ce n'est pas possible.

Contrairement à la croyance populaire (et au nom lui-même), une colonne d' timestamp n'est pas liée au time .

Avertissement : Cette réponse est spécifique à Sql Server (selon les tags de la question), d'autres moteurs de database peuvent avoir différentes implémentations ici. *

Au lieu de cela, c'est un nombre de 64 bits qui augmente régulièrement. La valeur du nombre est partagée entre toutes les tables dans une database unique qui a une telle colonne timestamp. En d'autres termes, si vous avez deux telles tables, modifiez une ligne dans une et modifiez une ligne dans l'autre, la valeur de l'horodatage dans la première table sera X et dans la deuxième table sera X + 1.

selon la documentation de l'horodatage :

Chaque database possède un countur qui est incrémenté pour chaque opération d'insertion ou de mise à jour effectuée sur une table contenant une colonne d'horodatage dans la database. Ce countur est l'horodatage de la database. Cela permet de suivre un time relatif dans une database, et non un time réel pouvant être associé à une horloge.

En tant que tel, la valeur n'est pas liée à la date et / ou à l'heure réelle de l'insertion ou de la dernière modification de la ligne et ne peut en aucun cas être convertie à cette date / heure.

Le seul but d'une colonne timestamp est d'avoir quelque chose d'unique, qui est garanti d'être en augmentation. Comme la valeur est 64 bits, vous aurez access à 18 446 744 073 709 551 616 opérations qui nécessitent une colonne d' timestamp avant la réinitialisation de la valeur. Si vous avez une database qui peut gérer un million d'opérations de ce type toutes les secondes, vous devrez attendre environ 584 554 ans avant que la valeur ne soit réinitialisée, donc je dirais que cela répond aux exigences d'unicité.

Le type de données d' horodatage dans le server SQL ne stocke pas de date ou d'heure. Il s'agit plutôt d'une colonne de maintenance de version qui est mise à jour chaque fois que la ligne est mise à jour. Vous devriez donc reconsidérer le type de données de cette colonne

Si votre colonne a le type d' timestamp (relativement rare), la réponse de Lasse V. Karlsen est correcte.

Si les deux colonnes ont le type datetime , vous pouvez:

 select datediff(day, dateReturn, currentdate) from YourTable 

Voir la fonction datediff .