日付範囲内のレコードを表示する方法は?

私はテストのような私の日付の列はvarchar型の私のテーブルのレコードを持っています。

Fname      Lname      Date  
vivek      parikh     01-09-2011 10:00:00 PM  
kashyap    vyas       02-09-2011 10:50:00 AM  
viral      panchal    02-09-2011 10:00:00 PM  
Arpit      Gosai      03-09-2011 10:00:00 PM  
Darshit    Chokshi    04-09-2011 10:00:00 PM  
Sameer     Rangrez    24-08-2011 9:15:12 AM  

ページから日付範囲(開始日と終了日)内にレコードを取得したい

私のコードは

 DateTime time = DateTime.Today;            //Use current time
    string format = "MM-dd-yyyy";

    SqlCommand cmd = new SqlCommand("select Fname,Lname,Insert_Date from Test where Insert_Date >= '" + Convert.ToDateTime(TextBox1.Text).ToString(format) + "' and Insert_Date <= '" + Convert.ToDateTime(TextBox2.Text).ToString(format) + "'  ", con);
    DataSet ds = new DataSet();
    SqlDataAdapter da = new SqlDataAdapter(cmd);
    da.Fill(ds);

    for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
    {
        Response.Write(ds.Tables[0].Rows[i]["Fname"].ToString());
        Response.Write(ds.Tables[0].Rows[i]["Lname"].ToString());
        Response.Write(ds.Tables[0].Rows[i]["Insert_Date"].ToString()+"
"); }
0
はい、SQL Server 2008 R2から..
追加された 著者 Vivek Parikh,
私は日付の比較で正確な日付をフェッチすることができますからSQLクエリをしたい
追加された 著者 Vivek Parikh,
SQL Server 2008の場合、<または>を使用した単純な日付比較は、列の型がvarcharであるため機能しません。解決策として何を望んでいるのか、SQLクエリが必要なのか、そのデータを取得するためのlinq式が必要なのかを説明してください。
追加された 著者 Habib,
これまでに何を試しましたか?どのバージョンのC#?短いLINQ文はあなたに本当に素晴らしい解決策を与えるはずです。
追加された 著者 Matten,
これはデータベースから引き出されていますか?もしそうなら、どのデータベースですか?またはそれは記憶に保持されていますか?
追加された 著者 El Ronnoco,

5 答え

クエリを作成するには、変換するために変換(日時、フィールド名、103)を使用しますvarcharからdatetimeへ

あなたの質問は、何かのようにすべきです。

select * from Test where Convert(datetime,field_date,103) >= '2011-01-01' --start date

and Convert(datetime,field_date,103) <= '2012-01-01'; --end date

これはあなたのC#ステートメントがどのように表示されるかです(日付フォーマットを指定するには 103 コードを含める必要があります.dd-mm-yyyy

 SqlCommand cmd = new SqlCommand("select Fname,Lname,Insert_Date from Test where Convert(datetime,Insert_Date,103) >= '" + Convert.ToDateTime(TextBox1.Text).ToString(format) + "' and Convert(datetime,Insert_Date,103) <= '" + Convert.ToDateTime(TextBox2.Text).ToString(format) + "'  ", con);
1
追加された
それは私に "varcharデータ型からdatetimeデータ型への変換は範囲外の値をもたらしました"
追加された 著者 Vivek Parikh,
私はあなたの日付のスタイル番号103を指定するのを忘れていたので、あなたはそれを得ています。スタイル形式については、次のリンクを参照してください。[link] sqlusa.com/bestpractices/datetimeconversion
追加された 著者 Habib,

SELECT colname FROM tablename WHERE somecol >= '2011-01-09' AND somecol <= '2011-09-24'

0
追加された
それは仕事をしなかった!上記のテーブルから詳細な解決策を教えてください。
追加された 著者 Vivek Parikh,
編集したQを参照してください。
追加された 著者 Vivek Parikh,
それはSQLデータベースです..あなたが試したいくつかのコードを投稿
追加された 著者 Karthik,

BETWEEN SQL演算子を確認してください。また、yyyymmdd hhmmssを回避するために、標準のSQL Server形式を使用して日付を正しく書式設定していることを確認し、日付の時間部分も考慮に入れてください。

0
追加された

次のSQL文は、companys sql server 2008に対してテストされており、正常に動作しています。

SELECT *
FROM some_table
WHERE date_field >= '2011-10-25' and date_field <= '2011-11-26'
0
追加された

select * from Test where Date >= '2011-09-02' and Date < '2011-0-04'

0
追加された