9

尽管这个问题似乎已经被问了很多次,但我似乎找不到特定于我的问题的答案:

我有一个 C# XML 解析器从 XML 文件中读取的变量。它是一个字符串,格式为"yyyy-MM-dd". 我想使用 将这个变量读入我们的数据库SQL,但它需要采用正确的日期时间格式才能执行此操作。不幸的是,我找不到任何日期时间格式"yyyy-MM-dd"。我错过了什么吗?

如果可能的话,我希望能够在必须打开SQL连接之前将变量转换为日期时间。

4

5 回答 5

28

如果可能,我希望能够在必须打开 SQL 连接之前将变量转换为日期时间。

DateTime result = DateTime.ParseExact("2012-04-05", "yyyy-MM-dd", CultureInfo.InvariantCulture);
于 2012-07-18T22:19:25.760 回答
3

也许 ParseExact 函数可以帮助你。

DateTime dResult = DateTime.ParseExact("2012-07-18", "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
于 2012-07-18T22:25:04.483 回答
1

在 sql server 中,您可以使用查询
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS [YYYY-MM-DD]

于 2012-07-19T06:21:50.377 回答
1

如果您使用 LINQ to XML,您可以简单地将元素或属性转换为DateTime

DateTime date = (DateTime) element;

然后,您可以使用参数化 SQL 将其插入到您的数据库中。我反对Aaron 的建议:尽可能保持数据最自然的形式,在 vanilla .NET 中是DateTime. 您可以将数据保留在有意义的表示中的时间越多,IMO 就越好。

如果您不使用 LINQ to XML,那么 smink 和 Riera 的解决方案很好 - 但如果可以的话,我强烈建议您使用 LINQ to XML :)

于 2012-07-18T22:27:11.107 回答
1

如果您不确定它是否有效,您可以使用“TryParseExact”。如果它有效,“成功”将是真实的。这样您就不会冒解析异常的风险。

DateTime timestamp;
bool success = DateTime.TryParseExact("2015-12-25", "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out timestamp);
于 2015-12-25T20:58:29.507 回答