SQL日期时间到c#字符串和返回SQL日期时间

本文关键字:SQL 时间 日期 返回 字符串 | 更新日期: 2023-09-27 18:08:13

我有一个webservice方法,从sql的格式获取数据2012-11-18 11:21:03当我保存为c#字符串时,它变成了这样的格式:18.11.2012 11:21:03如何将其更改回SQL格式2012-11-18 11:21:03

SQL日期时间到c#字符串和返回SQL日期时间

再次解析为dateTime

DateTime myTime = DateTime.Parse(myString);

和返回到合适的字符串

myTime.ToString("yyyy-MM-dd HH:mm:ss");

或者直接把它读成日期时间,省去中间人。

您可以通过使用格式字符串"u"获得通用可排序的字符串格式(看起来像SQL server使用的格式),如下所示:

var dateTimeString = String.Format("{0:u}", yourDateTime);

只需运行下面的代码,

var newDateTime = oldDateTime.Date.ToString("yyyy-MM-dd HH:mm:ss");

它只是把它转换回SQL Format DATETIME

日期作为字符串的问题是它们是模糊的,格式可能根据您在世界上的位置,甚至是本地机器设置而变化。您可能会假设日期字符串是yyyy-mm-dd,但如果它实际上是yyyy-dd-mm呢?有些日期似乎有效,有些则无效。

换句话说,2013-02-10是2月10日还是10月2日?如果它只是一个字符串,你就没有办法知道确切的意图。

根据#Haedrian的建议,你最好的选择是存储在一个DateTime c#对象中,而不是一个字符串。这样就不会有歧义,并且您可以访问各种特定于日期的函数。如果必须以字符串形式存储,可以像上面那样转换回日期,或者使用
DateTime.TryParse(datestring, out dateVariable);

不会为无效格式抛出异常。这取决于你是否想要异常!

我还建议,如果你必须使用字符串中使用3个字符的月,这再次消除了歧义,例如

"dd-MMM-yy hh:mm tt"