2012-07-18 53 views
5

即使看起来像这个问题已经被问了一堆,我似乎无法找到一个特定于我的问题的答案:将字符串转换为“yyyy-MM-dd”的日期时间

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

如果可能的话,我宁愿能够将变量转换为日期时间,然后才能打开我的SQL连接。

+0

您是否在使用存储过程使用LINQ2SQL,NHibernate编写SQL语句?奇怪的是,您正在抱怨格式为yyyy-MM-dd接近或SQL日期的确切格式。 – 2012-07-18 22:27:37

+1

@EricH yyyy-MM-dd并不总是有效。试试'SET LANGUAGE FRENCH; SELECT CONVERT(DATETIME,'2012-07-18');' – 2012-07-18 22:28:50

+0

我有一个格式为“yyyy-MM-dd”的字符串,我只是希望能够将其作为SQL datetime变量加载。我怎么做?剩下的我可以弄清楚我现在想的。 – weskpga 2012-07-18 23:13:58

回答

15

如果可能的话,我宁愿能够将变量转换为datetime,然后我必须打开我的SQL连接。

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

也许ParseExact功能可以帮助您。

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

如果你正在使用LINQ to XML,你可以简单地把元素或属性DateTime

DateTime date = (DateTime) element; 

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

如果你不使用LINQ to XML,然后从smink和里埃拉的解决方案都很好 - 但我强烈建议您使用LINQ到XML,如果你可能可以在SQL Server :)

1

你可以使用查询
SELECT CONVERT(VARCHAR(10),GETDATE(),120)AS [YYYY-MM-DD]

0

如果你不知道它会工作,你可以使用 “TryParseExact”。如果成功,“成功”将是事实。这样你就不会冒着解析异常的风险。

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