如何从datetime对象获取短日期格式

时间:2013-12-10 11:17:00

标签: c# asp.net

我正在文本框中捕捉时间(通过使用AJAX日历扩展程序) 字符串中的时间是12/10/2013,但是当我将字符串分配给日期时间对象时,它将转换为12/10/2013 12:00:00 AM

我想使用日期来使用下面的查询过滤数据库中的记录。请帮忙

string date1 = txtDate1.Text;

DateTime date = DateTime.ParseExact(txtDate1.Text, "MM/dd/yyyy", 

 System.Globalization.CultureInfo.InvariantCulture);
 string strQuery = "SELECT Story.UserName,Story.StoryId,COUNT(Likes.StoryID) AS         NumberOfOrders 
 FROM Likes LEFT JOIN Story ON Likes.StoryId=Story.StoryId and liked=" + date1 + "
 GROUP BY Story.StoryId,Story.UserName order by NumberOfOrders DESC ;";

2 个答案:

答案 0 :(得分:2)

在查询中将日期作为字符串传递通常不是一个好主意,因为您很可能会遇到格式问题 - 请将其留给您使用的框架决定最佳格式。

在您的情况下,您可以使用SqlParameter例如

来完成此操作
DateTime date = DateTime.ParseExact(txtDate1.Text, "MM/dd/yyyy", CultureInfo.InvariantCulture);
string strQuery = "SELECT Story.UserName, Story.StoryId, COUNT(Likes.StoryID) AS NumberOfOrders 
    FROM Likes LEFT JOIN Story ON Likes.StoryId=Story.StoryId and liked=@dateTime
    GROUP BY Story.StoryId,Story.UserName order by NumberOfOrders DESC";

using (SqlConnection connection = new SqlConnection("..."))
{
    using (SqlCommand cmd = new SqlCommand(strQuery, connection))
    {
        cmd.Parameters.AddWithValue("@dateTime", date);
        connection.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        ...
    }
}

在编写原始SQL时使用参数的另一个重要原因是确保您的用户输入被正确地保护,并且可以安全地传递给数据库。如果不这样做,您可以接受SQL Injection等各种开发。

答案 1 :(得分:0)

您可以使用Date对象代替DateTime对象。

DateTime是一个解释为表示DateTime的两个部分的整数(即:日期和时间)。您将始终在DateTime中同时拥有日期和时间。

例如:

   DateTime.Now.ToString("MM/dd/yyyy");