愚蠢的问题,但无法解决它...我有一个这种格式的字符串20081119
我有一个C#方法将字符串转换为DateTime以输入SQL Server数据库
public static DateTime MyDateConversion(string dateAsString) { return System.DateTime.ParseExact(dateAsString, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); }
问题是日期是这样的:Date = 19/11/2008 12:00:00 AM我需要它是yyyyMMdd类型的DateTime,因为我将它映射到一个模式来调用存储过程.
先谢谢你们.
干杯,Con
没有"yyyyMMdd类型的DateTime"这样的东西; DateTime只是一个大整数,表示一个纪元中的时间量 - 它没有格式.但这很好,因为你应该使用参数化的TSQL - 所以只需添加DateTime作为DbParameter的值,它将以明确的方式传递给db(不要使用字符串连接来构建TSQL命令) ):
DbParameter param = cmd.CreateParameter(); param.ParameterName = "@foo"; param.DbType = DbType.DateTime; param.Value = yourDateTime; // the DateTime returned from .ParseExact cmd.Parameters.Add(param);
或者SqlCommand
:
cmd.Parameters.Add("@foo", SqlDbType.DateTime).Value = yourDateTime;
如果你真的需要一个字符串,那么只需将字符串直接用作[n] [var] char参数.
另外 - 在这种情况下,要解析日期我将使用不变文化(因为文化不具有格式):
DateTime yourDateTime = DateTime.ParseExact(dateString, "yyyyMMdd", CultureInfo.InvariantCulture);
从对话中,似乎您可能还需要从DateTime转到字符串,在这种情况下只需将其反转:
string dateString = yourDateTime.ToString("yyyyMMdd", CultureInfo.InvariantCulture);