2012-01-05 15 views
-6

このコードでエラーが発生する理由を教えていただけますか?SQL Server Char/VarChar DateTimeエラー

C#コード

DateTime now = DateTime.Now; 
DateTime after1month = DateTime.Now.AddMonths(1); 

クエリこれは、任意の助けを理解され

SELECT * FROM TABLE WHERE THEDATE BETWEEN 'now' AND 'after1month' 

を生成します。 Thx

+0

このクエリを作成して実行するコードを表示します。 –

+0

_何かエラーが出ましたか?そして、あなたはあなたの質問を作成していますか? – Nailuj

+2

C#コードはSQLを生成しないため、SQL(LINQ to SQL)を作成する他のコードがあります。私たちはそれを見る必要があります。 – Richard

答えて

5

これは、より多くのようになります。

DateTime now = DateTime.Now; 
DateTime after1month = DateTime.Now.AddMonths(1); 

SqlCommand cmd = new SqlCommand("SELECT * FROM TABLE WHERE THEDATE BETWEEN @now AND @after1month", connection); 
cmd.Parameters.Add(new SqlParameter("@now", System.Data.SqlDbType.DateTime).Value = now); 
cmd.Parameters.Add(new SqlParameter("@after1month", System.Data.SqlDbType.DateTime).Value = after1month); 

は時にはクエリを使用してSQL Server側で直接それを行うことができます。

SELECT * FROM TABLE WHERE THEDATE BETWEEN getdate() AND dateadd(mm, 1, getdate()) 

を.NETからのパラメータなし。

(コメントの後)を追加しました

dateaddは、これまでにspecyfic間隔を追加することができますし、それを返すSQL Serverの機能です。

この場合、dateadd(mm, 1, getdate())は、現在の日時(getdate())に1つ()月(mm)を追加します。 MSDN dateaddにdatepart識別子と関数自体の詳細情報があります。

+0

@Michaelはこの_dateadd_キーワードについて詳しく説明できますか? – rofans91

+0

@ Rofans.NETちょうどhttp://www.google.lt/search?q=sql+server+dateaddを検索してみてください – Reniuz

+0

@ Rofans.NETは私の編集をチェックします。 –

0

'now'と 'after1month'はあなたのクエリで使用している変数だと思います。これらの変数のデータ型は?それをdatetime型にキャストする必要があります。これを行うには、SQLサーバーの変換機能またはキャスト機能を使用します。

+1

これらの変数は変数ではありません。一重引用符はそこにあります。これは文字列定数と見なされます –

2

uはADOを使用しない場合は、次にここで

SELECT * FROM TABLE WHERE THEDATE BETWEEN GETDATE() AND DATEADD(mm, 1, GETDATE()) 

として直接SQLクエリを使用DATEADD関数は、「MM」パラメータを使用して、現在の月に1ヶ月追加されます。