Frage

Ich versuche, eine Zeit nur Wert, einfügen, aber die folgende Fehlermeldung

  
      
  • ex { "SqlDateTime Überlauf. Muss zwischen 1753.01.01 12.00.00 und 12/31/9999 11.59.59 sein."} System.Exception
  •   

Vom vorderen Ende ist die Zeit, um die „TimeEdit“ Steuerung anhand von ausgewählten, mit dem Auf- und Abwärtspfeile. Die Tabelle in SQL Server verfügt über die Felder wie small gesetzt. Ich brauche nur die Zeit zu speichern. Ich verwende die folgende, um Daten an die App

select id, CONVERT (CHAR (5), ZeitVon, 8) als ZeitVon, CONVERT (CHAR (5), Timeto, 8) als Timeto VON dbo.Availability wobei id = @id und DAYNAME = @weekday

Wie gehe ich immer nur an den Tisch?

Bearbeiten ~ Lösung Wie pro Euardo und Chris, war meine Lösung nur eine Datetime-Zeichenfolge anstelle eines Zeit-String zu übergeben. Ich formatiert mein Ergebnis per Time Format mit "g".

Danke

War es hilfreich?

Lösung

ein Datum auswählen, die im Bereich (dh 1.1.1970) und es für alles, was Sie einfügen.

Andere Tipps

Sie können das Datum 1753.01.01 Wich Datum min Wert für Datetime in MSSQL und fügen Sie dann die Stunde, die Sie speichern möchten. Natürlich müssen Sie jedes Mal, wenn Sie den Wert zu erhalten, müssen diese prüfen, aber Sie können mit einigen Helfern, dass wickeln. Oder Sie können MSSQL 2008 verwenden und den neuen TIME-Datentyp verwenden.

Wenn Sie nur den Überblick über die Zeit zu halten sind, denken Sie es in ein int als ein von Mitternacht Offset-Speicher in welcher granualarity Sie benötigen (Sekunden, Minuten, Stunden, ...). Sie können es dann auf einen Timespan in Ihrem Code wandeln die entsprechenden TimeSpan.From ?? () Methode verwendet. Um den anderen Weg zu gehen, können Sie TimeSpan.Total verwenden ?? und gestutzt, wenn es sein muss. Wenn Sie manuelle Abfragen tun müssen, können Sie eine SQL-Funktion schreiben, die Stunden / Minuten / Sekunden in den entsprechenden Offset konvertieren.

Ich ziehe diese über einen Datetime verwenden und einen beliebigen Tages Kommissionierung, da sie den Zweck des Feldes klarer, was zu Verwirrung reduziert macht.

gibt es nicht so etwas wie Zeit in SQL, gibt es nur Datetime.

Für Ihren Zweck, ich so etwas wie dies nur zurückgeben den Zeitanteil verwenden würde.

SELECT (GETDATE() - (CAST(FLOOR(CAST(GETDATE() as FLOAT)) AS DateTime)))

Dabei gilt GETDATE () ist die Datetime Sie filtern möchten.

Wenn Sie die Zeit in der Datenbank einstellen, werden Sie '01 / 01 / 1901' oder '01 / 01 / 1753' zur Zeit hinzuzufügen haben.

Verwendung CAST Dont und in varchar konvertieren, wenn sie mit Datumzeit arbeiten, seine langsam. Halten Sie sich an numerische Operationen schweben.

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