我需要在ASP.net中使用C#执行一些日期操作。
如何编写用于比较两者的查询??(因为这两个日期的格式不同)
你能帮我吗??
发布于 2009-04-07 13:03:40
使用TryParseExact
方法验证字符串并将其解析为DateTime
值:
DateTime month;
if (DateTime.TryParseExact("MMM-yy", CultureInfo.InvariantCulture, DateTimeStyles.None, out month)) {
// parsing was successful
}
DateTime
值将使用月份的第一天和时间0:00来填充一个完整的值,因此像"jul-05"
这样的字符串将被解析为像2005-07-01 00:00:00.0000
这样的完整DateTime
值,因此它将是该月份的起点。
要将其与数据库中的日期进行比较,还需要下个月的起始点,您可以使用:
DateTime nextMonth = month.AddMonths(1);
现在,您可以通过以下方式将日期与月份的起始点和结束点进行比较:
where date >= @Month and date < @NextMonth
发布于 2009-04-07 12:49:33
DateTime myDateTime = DateTime.ParseExact( input, "MMM-yy" );
然后,您可以愉快地将它传递给存储过程(等等)。作为在服务器上进行比较的参数(或者只使用作为现有查询结果返回的DateTime )
发布于 2009-04-07 12:51:26
.NET框架在DateTime结构上有一些很好的方法:解析、TryParse、ParseExact、TryParseExact。
这个信息是浅谈MSDN。
因为您正在提供自定义日期字符串,因此我们应该使用ParseExact或TryParseExact。后者如果不能解析,就不会抛出异常。
所以..。我们试试这个..。
using System.Globalization;
CultureInfo MyCultureInfo = new CultureInfo("en-US");
string myString = "Jul-05";
DateTime myDateTime = DateTime.ParseExact(myString, "MMM-yy", MyCultureInfo))
Console.WriteLine();
然后,可以将值myDateTime作为DateTime属性传递给数据库,并对其进行检查。
编辑:该死,我打字的时候被罗兰打了一分钟!
编辑2:请注意“MMM”。正如在System.Globalization.DateTimeFormatInfo.AbbreviatedMonthNames中所述,MMM
是“表示当前MSDN页面属性中定义的月份缩写名称”。mmm
(小写)无效。
https://stackoverflow.com/questions/725491
复制相似问题