使用datetime2在今天的日期进行SQL Server查询

时间:2013-04-10 09:27:49

标签: c# asp.net sql sql-server-2008 datetime2

我有一个SQL Server数据库,当我在屏幕上打开它时,我希望它只显示今天添加的记录。

我将日期存储在名为DateAdded的字段中,它是DateTime2数据类型。

我试过这个

string dateAdded = today.ToShortDateString();

string query = "SELECT CustomerID, Title, FirstName, LastName, AppStatus 
FROM Customer     
WHERE DateAdded ='" + dateAdded + "'";

这显示没有我会假设的记录,因为它具有与日期一起存储的时间属性。

我在网上搜索试图找到答案,但似乎没有一个特定于今天添加的记录。

我还需要根据用户输入搜索日期范围,它可以在任何范围内,例如从2013年9月1日到2013年3月18日的视图记录。

为此编写sql查询的最佳方法是什么?

编辑 - 我的回答

Carl给出的答案有效,但我不明白如何更改值,以便我可以有不同的日期范围。我虽然我应该在这里发布我的最终结果,我根据收到的答案,所以它可能会帮助别人。 :)

using (SqlConnection conn = new SqlConnection(connectionString))
        {
            int year = date1.Year;
            int month = date1.Month;
            int day = date1.Day;

            string dateAdded = year + "-" + month + "-" + day + " ";

            int year2 = date2.Year;
            int month2 = date2.Month;
            int day2 = date2.Day;

            string dateAdded2 = year2 + "-" + month2 + "-" + day2 + " ";

            string query = "SELECT CustomerID, Title, FirstName, LastName, AppStatus, DateAdded FROM Customer WHERE DateAdded >= @date1 AND DateAdded <= @date2";

            using (SqlCommand cmd = new SqlCommand(query, conn))
            {
                cmd.Parameters.AddWithValue("date1", dateAdded + "00:00:00");
                cmd.Parameters.AddWithValue("date2", dateAdded2 + "23:59:59");
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                da.Fill(holder);
            }
        }

3 个答案:

答案 0 :(得分:3)

从OP的回复中将SQL更改为此

DECLARE @StartDate DATETIME2, @EndDate DATETIME2

SET @StartDate = DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)
SET @EndDate = DATEADD(day, DATEDIFF(day, 0, GETDATE()+1), 0)

SELECT CustomerID, Title, FirstName, LastName, AppStatus 
    FROM Customer     
    WHERE DateAdded >= @StartDate AND DateAdded < @EndDate

这将获得当前日期的任何内容(您可以使用您选择的日期替换Getdate()以获得可重用性)

答案 1 :(得分:1)

这个怎么样:

var sqlCommand = new SqlCommand();
sqlCommand.CommandText = "SELECT CustomerID, Title, FirstName, LastName, AppStatus FROM Customer WHERE DateAdded >= @DateAdded";
sqlCommand.Parameters.AddWithValue("@DateAdded", DateTime.Today);

答案 2 :(得分:-1)

尝试下面的SQL查询..

<强>查询:

string query = "SELECT CustomerID, Title, FirstName, LastName, AppStatus FROM Customer
WHERE CONVERT(VARCHAR(10), dateAdded, 101) = CONVERT(VARCHAR(10), @DateAdded, 101)";

参数化命令:

string dateAdded = today.ToShortDateString();
SqlCommand cmd = new SqlCommand();
cmd.CommandText = query ;
cmd.Parameters.AddWithValue("@DateAdded", dateAdded);