web-dev-qa-db-ja.com

文字列を「yyyy-MM-dd」から日時に変換する

この質問は何度も聞かれているように見えますが、私の質問に固有の答えが見つからないようです。

C#XMLパーサーによってXMLファイルから読み取られる変数があります。これは文字列であり、"yyyy-MM-dd"の形式です。 SQLを使用してこの変数をデータベースに読み込みたいのですが、これを行うには、適切な日時形式である必要があります。残念ながら、"yyyy-MM-dd"の日時形式が見つかりません。私は何かが足りないのですか?

可能であれば、SQL接続を開く前に、変数を日時に変換できるようにしたいと思います。

7
weskpga

可能であれば、SQL接続を開く前に、変数を日時に変換できるようにしたいと思います。

DateTime result = DateTime.ParseExact("2012-04-05", "yyyy-MM-dd", CultureInfo.InvariantCulture);
19
Jorge Ferreira

たぶんParseExact関数があなたを助けることができます。

DateTime dResult = DateTime.ParseExact("2012-07-18", "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
2
Riera

LINQ to XMLを使用している場合は、要素または属性をDateTimeにキャストするだけです。

DateTime date = (DateTime) element;

次に、パラメータ化されたSQLを使用してデータベースに挿入できます。私は主張しますに対してアーロンの提案:可能な限り、データを最も自然な形式に保ちます。これは、Vanilla.NETではDateTimeです。データを意味のある表現で保持できる時間が長ければ長いほど、IMOは向上します。

LINQ to XMLを使用していない場合は、sminkとRieraのソリューションで問題ありませんが、可能であればLINQ toXMLを使用することを強くお勧めします:)

1
Jon Skeet

sQLサーバーではクエリを使用できます
SELECT CONVERT(VARCHAR(10)、GETDATE()、120)AS [YYYY-MM-DD]

1
NG.

動作するかどうかわからない場合は、「TryParseExact」を使用できます。それが機能する場合、「成功」は真になります。このようにして、解析例外のリスクを冒すことはありません。

DateTime timestamp;
bool success = DateTime.TryParseExact("2015-12-25", "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out timestamp);
0
Ogglas