Darstellungsdatum mit 32 als Maximalwert für Tag

8

Ich baue Anwendung in asp.net mit Sql-Server 2005. In meiner Anwendung muss ich viele Termine & amp vertreten; Daten sind von Nepali (Bikram Sambhat), in denen der maximale Tag für einen Monat 32 sein kann.

Also, was ist die beste Option, um das Datum in Sql-Server zu repräsentieren, so dass 32 für Tag Wert platziert werden & amp; das kann leicht verglichen werden (manipuliert) in SQL Server sowie in asp.net?

    
ramkumar 18.02.2011, 18:30
quelle

4 Antworten

4

Es gibt keine einfache Umstellung von Nepali auf Gregorianisch. Denken Sie auf zwei Arten nach:

  • muss Nepalesisches Datum anzeigen
  • muss manipuliert werden (z. B. um den Unterschied zwischen Monaten, Tagen usw. zu finden)

Der erste ist einfach - als varchar speichern Der zweite ist nicht. Wenn Sie den Unterschied zwischen zwei nepalesischen Daten wissen möchten, können Sie das Datum als zweites Datum als gregorianisches Äquivalent speichern und Datum / Tag (Tag) dazwischen verwenden. Allerdings ist das Datum (Monat) für Sie hier unbrauchbar, es sei denn, Sie wollten den Unterschied von 2 nepalesischen Daten in Gregorian date months - nicht üblich wissen.

Klingt, als würde man nur in Varchar speichern und eine Bibliothek für nepalesische Dates, entweder im Frontend oder als CLR, würde besser untergehen.

Es kann für Konvertierungen hilfreich sein, eine vollständig materialisierte nepalesische Datumstabelle mit dem entsprechenden gregorianischen Datum zu haben, also wäre das Layout %Vor%

Aber ich bin mir nicht sicher, ob es viel (Nepali) für Mathe-Daten über die Konvertierung hinaus helfen würde - und nur, wenn Sie eine solche Konvertierung in SQL Server benötigen.

BEARBEITEN

@ pst's Kommentar

Es gibt einen Grund, VARCHAR gegenüber datetime vorzuziehen. Ich nahm an, dass die Frequenz, der größte Teil der Aktivität ein nepalesisches Datum liest / schreibt - welches gespeichert und als VARCHAR gelesen wird - keine Konvertierung. Wenn und nur wenn date maths ist erforderlich ist, involviert es die Bibliothek - in diesem Fall rufen Sie die Konvertierung auf, und nur dann, wenn Sie zu irgendeinem Zeitpunkt den gregorianischen Kalender benötigen. Wenn alles, was Sie wollen, Mathe zwischen NepaliDate / Scalar oder NepaliDate / NepaliDate ist - wieder bietet datetime überhaupt keinen Nutzen - es kann nicht Tag # 32 in einem Monat verarbeiten.

    
RichardTheKiwi 18.02.2011, 18:47
quelle
7

Es gibt einen Typ, der einige Klassen implementiert hat, um zwischen nepalesischen und gregorianischen Daten zu konvertieren. Auf diese Weise können Sie Daten im Nepali-Format eingeben, aber sie in einem Format speichern, das SQL Server versteht. Schau hier: Ссылка

Denken Sie daran, dass ein Datum in jedem Kalender in einen anderen Kalender konvertiert werden kann - sie zeigen auf denselben Tag.

    
Rune Grimstad 18.02.2011 18:46
quelle
5

Ich würde empfehlen, den eingebauten Datumstyp zu verwenden. Es klingt wie jedes Datum in Ihrem Format kann leicht in das Standard-SQL-Format konvertiert werden.

Ich würde einfach ein Dienstprogramm schreiben, um jedes Datum von SQL Server in Ihr Anzeigeformat zu konvertieren, wann immer Sie in die Datenbank laden oder schreiben.

    
captncraig 18.02.2011 18:36
quelle
0

Schauen Sie sich Nepali Kalender an, es kann Ihnen helfen.

    
Shrestha Ashesh 11.03.2014 08:05
quelle

Tags und Links