10
votes

Lors du stockage d'une date de date dans SQL Server (type DateTime), quel format stocke-t-il?

Lorsque vous stockez une valeur DateTime dans SQL Server 2008, à l'aide du type DateTime, quel format stockera-t-il la valeur dans?

Est-ce le nombre de secondes depuis 1970 (ou autre)?

sur le côté de l'application (.NET), je passe dans un objet DateTime.

Quand j'appuie les lignes de la table dans l'analyseur de requête, le formatera-t-il en fonction de mes paramètres de culture ou je vis exactement ce qui est stocké dans la DB?


1 commentaires

Pas une réponse mais un conseil général. Concertez comme binaire aidera à diagnostiquer des curiosités comme celle-ci et d'autres (Unicode). Sélectionner la distribution (getDate () comme binaire);


4 Réponses :


6
votes

Il est stocké comme un point flottant représentant des jours depuis le 1er janvier 1900. Si vous l'arrondiez en la jumelant à un int, qui ne laisse que la partie de date:

select  getdate() + 0.5
-->
2011-07-12 11:22:09.927


2 commentaires

+1 Ils peuvent être traités comme des points flottants et manipulés dans SQL comme s'ils étaient, mais quand ils sont écrits sur le disque, ils sont INTS.


Ils sont stockés comme 2 intens, voir mon message ici blogs.lessshandot.com/index.php/datamgmt/datadesign/...



13
votes

interne, selon Sqldenis, ils sont stockés comme deux entiers

http: //blogs.lessshandot .com / index.php / datamgmt / datadesign / comment-sont-dates-stockés-in-sql-serveur

Lorsque vous les voyez dans l'analyseur de requêtes, vous voyez des chiffres évalués.

Il est pas stocké comme "Unix Time"
http://fr.wikipedia.org/wiki/unix_time


7 commentaires

+1 Je me suis toujours demandé s'ils étaient un point flottant, ce que l'exposant a été utilisé et si la précision diminuerait davantage dans le futur :) Merci d'avoir effacé cela.


Correct, content que la poste que j'ai écrite pourrait aider quelqu'un :-)


@Sqlmenace Avez-vous une notification lorsque les références sont-elles disponibles ou avez-vous simplement eu la question de lire cette question? :RÉ


Je suis arrivé dans les référeuses par hasard :-)


@Matthew Que voulez-vous dire que je vois des chiffres évalués?


@Codecompletage Je veux dire que, lorsqu'il est demandé, l'analyseur de DB Motch & Query est en train de transformer son type de données de base (entiers) dans la date affichée à laquelle vous voyez.


@Sqlmenace Puis-je prendre le saut logique pour penser que la date SQL2008 DATE utilise uniquement un seul int alors?



-1
votes
DateTime doj = new DateTime();

System.Globalization.CultureInfo c1=new System.Globalization.CultureInfo("en-GB",true);
doj = DateTime.Parse(Txtdoj.Text.Trim(), c1, System.Globalization.DateTimeStyles.NoCurrentDateDefault);
use
..ituse query to display the date time
select convert (varchar(max),doj,103)as doj from tbl_registration

0 commentaires

-1
votes

Voici le code pour afficher comment il est stocké:

fulldate                internal           days        ticks
----------------------- ------------------ ----------- -----------
2016-11-07 10:54:13.080 0x0000A6B700B3AFB4 42679       11775924


1 commentaires

Pourquoi le bowvote? J'aime m'améliorer, mais j'ai besoin de savoir quelle partie de cette réponse que vous ressentez est incorrecte.