2016-04-07 16 views
-1

日時の形式をSQLの日時に変換したい Thu Apr 07 2016 06:30:00 GMT + 0530(インド標準時) any 1つはありがとうありがとう。インドの標準時刻をSQLの日時に変換する方法

+0

入力文字列とは何ですか?それは本当に 'GMT + 0530(インド標準時)'を含んでいますか? SQL Serverに送信する前にDateTimeOffsetに解析しようとしましたか?列のタイプは何ですか? DateTimeOffset(正常)またはDateTime(忘れてタイムゾーン?) –

答えて

-1

あなたの入力が文字列の場合は、特定のカルチャの日付の解析を開始する必要があります。

<your_culture>は、あなたの国のために複数の培養名のいずれか( http://www.csharp-examples.net/culture-names/を参照)

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

あなたは、単純な引用符で、バックSQL互換の文字列として日付を取得することができますが含まれる:

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

DateTimeは、タイムゾーンまたはオフセットをサポートしていません。使用する適切なタイプはDateTimeOffset –

+0

もちろん、これはフォーマット間の変換のみです。質問から、私は彼がタイムゾーン変換も必要であると推測しませんでした。 –

+0

日付をデータベースにテキストとして保存または渡すのは良い考えではありません。日付パラメータを使用して変換や書式設定エラーを回避する方がはるかに簡単で簡単です。たとえば、この回答の形式は「SQL互換ではない」*です。 ISO 8601形式のように見えるかもしれませんが、 'T'セパレータがありません。サーバーのロケールを使用して解析されます –

1

あなたの文字列がを持っているので、の値は、DateTimeの代わりにDateTimeOffsetに解析されます。のオフセット部分を保持するためです。

しかし、どちらもDateTimeDateTimeOffsetは、タイムゾーン情報を保持し、あなたは文字列リテラル区切り文字としてGMT(India Standard Time)部品を使用する必要があります。

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); 

は今、あなたは{07.04.2016 06:30:00 +05:30}としてDateTimeOffsetを持っています。

enter image description here

そして、それは同様にオフセット一部が保存されますので、私は(もちろんparameterized query付き)SQL Serverでこのdtodatetimeoffsetとして入力された列を挿入します。

+---------------------------+ 
| Time zone offset range | 
+---------------------------+ 
| -14:00 through +14:00 | 
+---------------------------+ 
関連する問題