2

画面上で開くと、今日追加されたレコードだけを表示したい 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クエリを書くための最良の方法は何ですか?

編集 - 私の答え

カールが出した答えはうまくいきましたが、値を変更する方法がわからなかったので、異なる日付範囲を持つことができました. 受け取った回答に基づいて最終結果をここに投稿する必要がありますが、他の人の助けになるかもしれません。:)

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);
            }
        }
4

3 に答える 3

4

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() を選択した日付に置き換えることができます)。

于 2013-04-10T09:29:22.983 に答える
1

これはどう:

var sqlCommand = new SqlCommand();
sqlCommand.CommandText = "SELECT CustomerID, Title, FirstName, LastName, AppStatus FROM Customer WHERE DateAdded >= @DateAdded";
sqlCommand.Parameters.AddWithValue("@DateAdded", DateTime.Today);
于 2013-04-10T09:34:24.597 に答える
-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);
于 2013-04-10T09:45:21.430 に答える