0

DateTime フィールドを使用してデータをフィルター処理する where 句を使用して、vb.net アプリケーションを構築しようとしています。

私のテーブルには 5 つのフィールドと 10000 を超える行が含まれています。DateTime フィールドを使用して、今から 7 年以上前のすべての行を検索したいと考えています。しかし、このスクリプトは何度も再利用されます。したがって、この種の where 句は使用したくありません。アプリケーションを実行するたびに where 句を変更する必要がないからです。

select * from myTable WHERE myDateTimeField < '2006-09-07 00:00:00.000'

次のような where 句を書く方法を見つけたいと思います。

select * from myTable WHERE myDateTimeField "is older than 7 years from NOW"

私は VB.net をあまり使用しないので (ご覧のとおり)、このことは本当に私を悩ませています。

4

4 に答える 4

0

SQL Serverがあればもっと良いと思います

strQuery = "select * from myTable WHERE myDateTimeField 
            <= DATEADD(YEAR, -7, GETDATE())"
于 2013-09-17T19:05:16.047 に答える
0

あなたが探しているのは、datetime の DSL です。いくつかのアイデアを得るために、このブログ投稿をチェックしてください。

http://leecampbell.blogspot.com/2008/11/how-c-30-helps-you-with-creating-dsl.html

幸運を

PS

それを vb.net に翻訳するのに助けが必要な場合は、コメントを送信してください。

于 2013-09-17T21:57:23.130 に答える
0

を利用するだけですDateTime

Dim dateTime As DateTime
dateTime = DateTime.Now.AddYears(-7);

SQL 文字列を作成するときはToString、日付を呼び出すだけです (もちろん、必要に応じて書式を設定できます)。

dateTime.ToString("MM/dd/yyyy");
于 2013-09-17T18:48:01.017 に答える
0

SELECT * FROM myTable WHERE myDateTimeField < DATEADD(YEAR, -7, GETDATE())

これは、 のデータがSQL サーバーmyDateTimeFieldの同じローカルタイム ゾーンにある場合です。

データが UTC の場合 (多くの場合はそうあるべきです)、次を使用します。

SELECT * FROM myTable WHERE myDateTimeField < DATEADD(YEAR, -7, GETUTCDATE())
于 2013-09-17T19:13:50.987 に答える