尽管这个问题似乎已经被问了很多次,但我似乎找不到特定于我的问题的答案:
我有一个 C# XML 解析器从 XML 文件中读取的变量。它是一个字符串,格式为"yyyy-MM-dd"
. 我想使用 将这个变量读入我们的数据库SQL
,但它需要采用正确的日期时间格式才能执行此操作。不幸的是,我找不到任何日期时间格式"yyyy-MM-dd"
。我错过了什么吗?
如果可能的话,我希望能够在必须打开SQL
连接之前将变量转换为日期时间。
尽管这个问题似乎已经被问了很多次,但我似乎找不到特定于我的问题的答案:
我有一个 C# XML 解析器从 XML 文件中读取的变量。它是一个字符串,格式为"yyyy-MM-dd"
. 我想使用 将这个变量读入我们的数据库SQL
,但它需要采用正确的日期时间格式才能执行此操作。不幸的是,我找不到任何日期时间格式"yyyy-MM-dd"
。我错过了什么吗?
如果可能的话,我希望能够在必须打开SQL
连接之前将变量转换为日期时间。
如果可能,我希望能够在必须打开 SQL 连接之前将变量转换为日期时间。
DateTime result = DateTime.ParseExact("2012-04-05", "yyyy-MM-dd", CultureInfo.InvariantCulture);
也许 ParseExact 函数可以帮助你。
DateTime dResult = DateTime.ParseExact("2012-07-18", "yyyy-MM-dd", System.Globalization.CultureInfo.InvariantCulture);
在 sql server 中,您可以使用查询
SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS [YYYY-MM-DD]
如果您使用 LINQ to XML,您可以简单地将元素或属性转换为DateTime
:
DateTime date = (DateTime) element;
然后,您可以使用参数化 SQL 将其插入到您的数据库中。我反对Aaron 的建议:尽可能保持数据最自然的形式,在 vanilla .NET 中是DateTime
. 您可以将数据保留在有意义的表示中的时间越多,IMO 就越好。
如果您不使用 LINQ to XML,那么 smink 和 Riera 的解决方案很好 - 但如果可以的话,我强烈建议您使用 LINQ to XML :)
如果您不确定它是否有效,您可以使用“TryParseExact”。如果它有效,“成功”将是真实的。这样您就不会冒解析异常的风险。
DateTime timestamp;
bool success = DateTime.TryParseExact("2015-12-25", "yyyy-MM-dd", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal, out timestamp);