2017-11-08 4 views
0

表にはテキストである日付フィールドがあります。 SQL文は次のとおりです。ユーザー指定の日付の間にあるアクセス・レコードを検索します。

"SELECT datefield, anotherfield FROM tablename WHERE CDate(datefield) BETWEEN #" & dateStart & "# AND #" & dateEnd & "#" 

dateStartdateEndは "2017年10月2日" と "2017年10月4日" のように、文字列です。文字列datefieldを日付に変換するにはCDateを使用し、日付として扱われるように開始および終了日付文字列を囲む#を角かっこで置き換えました。文字通り、運がないWHERE句の数十種類の変種を試しました。どんな提案も感謝しています。

+1

'テーブルにはテキストの日付フィールドがあります.'日付は**ではない**テキストです。日付です。あなたが日付のように行動するようにしたい場合は、それらを日付として保存し、日付を使用してDBをポーリングします。問題は '' 1/0 ''が '' 9 "'未満であるため '' 10/02/2017 "'は '' 9/1/1935 ''よりも見た目が劣るということです。 [ask]を読んで[ツアー]を受けてください – Plutonix

答えて

0

日付はテキストとして保存しないでください。あなたがテーブルのデザインで立ち往生している場合しかし、あなたはあなたの「日付」フィールドの3つのすべてのためのCDate関数を使用する必要があります。

SELECT CDate([datefield]) AS myDate, anotherfield 
FROM Table2 
WHERE (((CDate([datefield])) Between CDate([dateStart]) And CDate([dateEnd]))); 
-1

は、私はまた、格納およびMySQLで日付を取得するには、あなたの方法を使用しました。しかし、あなたの視点の代わりに1フィールドだけを使用しましたdateStartdateEnd。私はあなたの日付を格納するための1つのフィールドを作成することをお勧めします。 VB.NETを使用してこれらの日付間の値をキャッチする方法は次のとおりです。

SELECT datefield, anotherfield FROM tablename WHERE datestoredfield BETWEEN '" & selectedDateFrom.toString("MM/dd/yyyy") & "' AND '" & selectedDateTo.toString("MM/dd/yyyy") & "'; 

あなたの日付フィールドに現在格納されている日付形式はMM/dd/yyyyあるので、私はその選択された日付の末尾に.toString("MM/dd/yyyy")を示しました。

+0

これは 'yyyy-mm-dd'形式を使用する場合を除いて決して動作しません。それでも、@Plutonixからのコメントを見る – Gustav

関連する問題