Frage

Ich benutze SQL Server 2008 R2 als Datenspeicher.

Bisher auf der Testmaschine hatte ich die Englisch-Version der Software und Abfragen verwendet, um die Formatierung des Datetime-Feld als

fromDate.ToString("MM/dd/yyyy");

Jetzt habe ich die Datenbank auf einem anderen Server bereitgestellt, die in der italienischen Sprache. Ich werde das Format in meinem Code ändern

fromDate.ToString("dd/MM/yyyy");

Gibt es eine Möglichkeit, die Abfrage in einem neutralen Format zu machen?

Danke!

Bearbeiten :

ich habe vergessen zu erwähnen, dass ich NetTiers mit Codesmith verwende. Hier ist eine komplette Probe

AppointmentQuery aq = new AppointmentQuery(true, true);
aq.AppendGreaterThan(AppointmentColumn.AppointmentDate, fromDate.ToString("MM/dd/yyyy"));
aq.AppendLessThan(AppointmentColumn.AppointmentDate, toDate.ToString("MM/dd/yyyy"));
AppointmentService aSvc = new AppointmentService();
TList<Appointment> appointmentsList = aSvc.Find(aq);
War es hilfreich?

Lösung

ISO 8601 Datenelemente und Austauschformate - Informationsaustausch - Darstellung von Daten und Zeiten erlaubt sowohl die YYYY-MM-DD und YYYYMMDD. SQL Server erkennt die ISO-Spezifikationen.

  

Obwohl der Standard sowohl ermöglicht es die   YYYY-MM-DD und YYYYMMDD Formate für   vollständiges Kalenderdatum   Darstellungen, wenn der Tag [DD] ist   dann nur das YYYY-MM-Format weggelassen   ist erlaubt. Durch disallowing Daten ein   die Form YYYYMM, die Standard-Vermeidet   Verwechslungen mit dem trunkierten   Darstellung YYMMDD (noch häufig   verwendet wird).

Ich ziehe das Format JJJJMMTT, aber ich denke, das ist, weil ich nur wusste, dass mit zu beginnen, und mir scheint es, universellere, weg mit Zeichen getan zu haben, die länderspezifisches angesehen werden könnten.

Andere Tipps

Sie sollten den Code teilen Sie die Abfrage auszuführen verwenden, aber ich denke, Sie bauen eine SQL-Abfrage dynamisch Zeichenfolge concats mit der Abfrage und die Argumente zu bauen. Sie sollten vielmehr eine parametrisierte Abfrage verwenden, dann können Sie die Daten als Datumsobjekt und keine Notwendigkeit, Converto eine Zeichenfolge übergeben.

Zum Beispiel, wenn Ihre Abfrage so etwas wie dies könnte

DateTime fromDate = DateTime.Now;

SqlCommand cmd = new SqlCommand(
  "select * from Orders where fromDT = @fromDate", con);

cmd.Parameters.AddWithValue("@fromDate", fromDate);

...

Als guter Nebeneffekt, wird dies das Risiko von SQL-Injection . Update: Nach dem bearbeiten, die die Frage Kontext wesentlich ändert, und ich muss zugeben, dass ich Null Kenntnis des .netTiers Projekt. Aber nur aus Neugier haben Sie versucht, nur das Datum vorbei Instanzen direkt wie im Folgenden?

AppointmentQuery aq = new AppointmentQuery(true, true); 
aq.AppendGreaterThan(AppointmentColumn.AppointmentDate, fromDate); 
aq.AppendLessThan(AppointmentColumn.AppointmentDate, toDate); 
AppointmentService aSvc = new AppointmentService(); 
TList<Appointment> appointmentsList = aSvc.Find(aq); 

Ich persönlich verwenden yyyy-MM-dd immer. Dies macht es auch als String sortierbar.

Allerdings ist ein Datum, ein Datum ist ein Datum. Es gibt keine Notwendigkeit, das Datum in eine Zeichenfolge zu ändern. In .NET Benutzer DateTime.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top