0
id   name         mydate                   
1     co        2011-02-10 07:25:02  
2     Carl      2011-02-10 07:26:02
.
.
.
10000   Caroline  2011-02-18 22:44:08

私はそのようなデータベースを持っています.(1時間)のような指定された間隔で検索したい. たとえば、すべての日のすべてのレコードのうち、午前 7 時から午前 8 時までのレコードを表示したいとします。そして、毎日午前 7 時と午前 8 時を使用して、次の処理を行います。C#でそれを行うにはどうすればよいですか?

4

3 に答える 3

2

BETWEENキーワードを使用できます。

SELECT * FROM A WHERE mydate between '1/1/56 07:00:00' and '12/31/57 08:00:00'

これはC#固有ではありません。LINQを使用している場合は、次のようになります。

from mt in ctx.MyTable where mydate >= datestart and mydate <= stopdate select mt

この場合、ctxがコンテキストであり、より低い日付を開始し、より高い日付を停止します。

ADO.NETを使用して結果を読み取りたい場合:

var cn = new SqlConnection("paste your code here");

SqlCommand command = new SqlCommand(); 
cmd.CommandText = "SELECT * FROM A WHERE mydate between '1/1/56 07:00:00' and '12/31/57 08:00:00'";
cmd.Connection = cn;

try
{
    cn.Open();
    SqlDataReader reader = cmd.ExecuteReader();

    while (reader.Read())
    {
        // up to you
    }
    reader.Close();
}
finally
{
    cn.Close();
}
于 2012-06-14T02:27:36.317 に答える
1
SELECT * FROM table 
WHERE DATEPART(hh, mydate) = @start
OR (DATEPART(hh, mydate) = @end AND DATEPART(mi, mydate) = 0)
ORDER BY mydate

DATEPART指定された日付値から日付の指定された部分を取得する SQL 関数です。上記の SQL スクリプトでは、@start と @end は開始時間の整数値で、午前 7 時から 8 時までの場合、@start = 7 と @end = 8 です。

基本的に、時間コンポーネントが 7 に等しい日付、または時間コンポーネントが 8 で分コンポーネントが 0 に等しい日付を持つテーブルからすべてのレコードを取得しています。これにより、7:00 の間のすべてのレコードが取得されます。 AM から 8:00 AM まで。

于 2012-06-14T02:51:22.937 に答える
1
SELECT [mydate] 
    FROM [table] 
    WHERE DATEPART(hh,[mydate]) >= 6 
        AND DATEPART(hh,[mydate]) <= 8 
    Order by DATEPART(hh,[mydate])
于 2012-06-14T02:36:28.340 に答える