2017-10-02 1 views
1

Ich habe diese Art und Weise zu arbeiten:T-SQL konvertiert BigInt in Datum

select cast(cast(20171002 as varchar) as date) AS BigInt_into_Date,

aber ist es möglich, das gleiche mit dem einmaligen Gebrauch von convert() Funktion achive? Konvertierung zwischen bigint und datetime ist explicite, so expression Argument in convert benötigt wird, so mayby ​​wir könnten auch in konvertieren date

+2

nicht auf die Frage bezogen, aber immer noch lesenswert - [Schlechte Gewohnheiten zu treten: erklärt VARCHAR ohne (Länge)] (http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10/09/bad-habits-to-kick-declaring-varchar-without-length.aspx) – GarethD

Antwort

1

Es ist möglich von BigInt zu Datetime zu konvertieren.

Der numerische Wert für den 2. Oktober 2017 ist jedoch 43008 (Tage seit dem 1. Januar 1900).

20171002 ist wirklich eine String-Darstellung eines Datums als eine Zahl gespeichert - daher Ihre Notwendigkeit für die Doppel-Besetzung.

Und nein - ich glaube nicht, es ist möglich, eine einfache Arithmetik auszuführen 20.171.002-43.008 :-) zu bekommen

+0

siehst du irgendwelche Gründe Warum werden Daten als Bigints in unserer SQL Server 2012-Datenbank gespeichert? Verbessert es die Leistung? – Qbik

+0

Ich konnte wirklich keine Vermutung hinsichtlich der Designentscheidung in diesem Fall riskieren. Ich kann nicht sehen, dass die Speicherung des Datums auf SQL Server-Ebene von Vorteil ist. Vielleicht hängt es mit einer Entscheidung auf Anwendungsebene zusammen. Entschuldigung, ich habe nichts Konkretes für dich. – Brett

Verwandte Themen