我有一個SQL Server數據庫,當我在屏幕上打開它時,我希望它只顯示今天已添加的記錄。使用datetime2在今天的日期SQL Server查詢
我有一個存儲在名爲DateAdded的字段中的日期,它是DateTime2數據類型。
我想這
string dateAdded = today.ToShortDateString();
string query = "SELECT CustomerID, Title, FirstName, LastName, AppStatus
FROM Customer
WHERE DateAdded ='" + dateAdded + "'";
這顯示沒有記錄,我會假設,因爲它具有存儲的日期時間屬性。
我在網上搜索試圖找到答案,但似乎沒有什麼特定的只是今天添加的記錄。
我還需要根據用戶輸入搜索日期範圍,它可以在任何範圍內,例如從09/01/2013到18/03/2013的查看記錄。
什麼是最好的方式去寫這個sql查詢?
編輯 - 我的回答
答案卡爾給了工作,但我不知道如何改變價值觀,所以我可以有不同的日期範圍。我雖然應該在這裏發佈我的最終結果,我根據收到的答案發布,所以它可能會幫助其他人。 :)
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);
}
}
您應該使用參數化** **查詢和使用參數爲您要添加的日期;該參數可以是'DateTime'類型,因此可以處理您的數據 – 2013-04-10 09:30:09
請使用參數進行良好實踐。或者更好地使用SQL來實現這一點。 SELECT CONVERT(VARCHAR(8),GETDATE(),1)AS [MM/DD/YY] http://www.sql-server-helper.com/tips/date-formats.aspx – Ash 2013-04-10 09:33:05
轉換非常糟糕。我們應該使用DATEADD(day,DATEDIFF(day,0,GETDATE()),0)。 – 2013-04-10 09:38:21