簡體   English   中英

SQL查詢特定的日期間隔

[英]sql query for specific date interval

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小時)。 例如,我想查看全天所有記錄中的07 AM到08 AM之間的記錄。 然后,我將使用每天的上午7點和上午8點進行進一步的處理。 如何在C#中做到這一點?

您可以使用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是上下文,startdate的日期較低,而stopdate的日期較高。

如果要使用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();
}
SELECT [mydate] 
    FROM [table] 
    WHERE DATEPART(hh,[mydate]) >= 6 
        AND DATEPART(hh,[mydate]) <= 8 
    Order by DATEPART(hh,[mydate])
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是開始時間的整數值,對於從7AM到8AM的情況,@ start = 7和@end = 8。

本質上,您將從表中獲得所有記錄,這些記錄的日期中的小時部分等於7,或者日期中的小時部分等於8,分鍾部分等於0。這應該獲取7:00之間的所有記錄。上午至8:00(含)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM