从C#到MySql格式的日期转换

如何将C#datetime转换为MySql Datetime格式。 我从7/27/2011这种格式的文本框中获取价值。 但我想以2011-7-27的格式转换。 所以我在这里stuking。 请帮我。 我的目标是过滤两个日期之间的记录,并在asp.net的listview控件中显示。 这是我的代码:

DateTime dt1 = Convert.ToDateTime(txtToDate.Text); DateTime dt2 = Convert.ToDateTime(txtFromDate.Text); lvAlert.DataSource = facade.GetAlertsByDate(dt1, dt2); lvAlert.DataBind(); 

我没有将MySQL与.NET一起使用,但Oracle与.NET有类似的日期转换问题。 保持snae的唯一方法是使用日期值的参数,既用于输入,也用于WHERE子句比较。 使用MySQL日期参数类型创建的参数,只是给它一个.NET日期时间值,应该可以在不需要您进行转换的情况下工作。

编辑添加示例代码

此代码示例显示了使用DateTime值参数的基本技术,而不是将转换编码为文本值并将这些文本值直接嵌入SQL命令文本中。

 public DataTable GetAlertsByDate(DateTime start, DateTime end) { SqlConnection conn = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand( "SELECT * FROM Alerts WHERE EventTime BETWEEN @start AND @end", conn); DataTable table = new DataTable(); try { SqlParameter param; param = new SqlParameter("@start", SqlDbType.DateTime); param.Value = start; cmd.Parameters.Add(param); param = new SqlParameter("@end", SqlDbType.DateTime); param.Value = end; cmd.Parameters.Add(param); SqlDataAdapter da = new SqlDataAdapter(cmd); da.Fill(table); } finally { cmd.Dispose(); conn.Close(); conn.Dispose(); } return table; } 

这是SQL Server代码,但对于大多数数据库,该技术应该是相同的。 例如,对于Oracle,唯一的变化是使用Oracle数据访问对象,并在参数名称中使用“:”代替“@”。 MySQL的技术也应该非常相似。

对于许多数据库,可能存在用于创建参数的快捷方式,例如:

 cmd.Parameters.AddWithValue("@start", start); 

当您知道值不为null时,这可以正常工作,并且可以从值的C#类型派生正确的参数类型。 “AddWithValue”特定于SQL Server; “添加”也起作用,但在SQL Server中已经过时了。

希望这可以帮助。

您可以将格式分配给数据时间, DateTime.ParseExact()DateTime.ToString(format)

2011-7-27的格式是yyyy-m-dd

我用:

 string fieldate = dt1.ToString("yyyy-MM-dd"); 

假设您在数据库中执行此操作,我认为您应该使用date_format来获取所需的格式

date_format(dateval,'%Y-%c-%d') (未测试)