2016-04-07 10 views
-1

Ich möchte unter Datum und Uhrzeit Format in SQL-Datum und Uhrzeit konvertieren Do Apr 07 2016 06:30:00 GMT + 0530 (India Standardzeit) any man hat eine Idee Danke.Wie konvertiert man Indien Standardzeit zu SQL-Datum und Uhrzeit in C#

+0

Was ist die Eingabezeichenfolge? Enthält es wirklich beides, GMT + 0530 (India Standard Time)? Haben Sie versucht, es vor dem Senden an SQL Server mit einem DateTimeOffset zu analysieren? Was ist der Typ der Spalte? DateTimeOffset (gut) oder nur DateTime (Zeitzonen vergessen?) –

Antwort

-1

Wenn Sie Ihre Eingabe eine Zeichenfolge ist, müssen Sie das Datum für die spezifische Kultur starten Parsen:

DateTime dt = DateTime.ParseExact(inputString, System.Globalization.CultureInfo("<your_culture>")); 

wo <your_culture> einer der mehreren Kulturnamen für Ihr Land ist (siehe http://www.csharp-examples.net/culture-names/)

dann können Sie das Datum zurück als SQL-kompatiblen String mit einfachen Anführungszeichen erhalten enthalten:

string sqlDate = dt.ToString("'yyyy-MM-dd HH:mm:ss'"); 
+0

DateTime unterstützt keine Zeitzonen oder Offsets. Der richtige Typ ist DateTimeOffset –

+0

Natürlich wird dies nur zwischen den Formaten konvertieren. Aus der Frage habe ich nicht abgeleitet, dass er auch eine Zeitzonenumwandlung benötigt. –

+0

Speichern oder übergeben von Daten als Text in der Datenbank ist * nicht * eine gute Idee. Es ist viel besser und einfacher, Datumsparameter zu verwenden und Konvertierungs- und Formatierungsfehler zu vermeiden. Zum Beispiel ist das Format in dieser Antwort * nicht * "SQL-kompatibel". Es kann wie das ISO 8601-Format aussehen, aber es fehlt das 'T'-Trennzeichen. Es wird mit dem Gebietsschema des Servers analysiert –

1

da Ihr StringhatWert würde ich es zu DateTimeOffset statt DateTime analysieren, da es den Offset-Teil halten kann.

Aber weder DateTime noch DateTimeOffset hält Zoneninformationen Zeit, Sie GMT und (India Standard Time) Teile als Stringliteral Trennzeichen verwendet werden soll.

var s = "Thu Apr 07 2016 06:30:00 GMT+0530 (India Standard Time)"; 
var dto = DateTimeOffset.ParseExact(s, "ddd MMM dd yyyy HH:mm:ss 'GMT'zzz '(India Standard Time)'", 
            CultureInfo.InvariantCulture); 

Jetzt haben Sie eine DateTimeOffset als {07.04.2016 06:30:00 +05:30}.

enter image description here

Und ich würde diese dto als datetimeoffset typisierte Spalt in SQL Server einfügen (mit parameterized query natürlich), da es Teil auch Offset spart.

+---------------------------+ 
| Time zone offset range | 
+---------------------------+ 
| -14:00 through +14:00 | 
+---------------------------+