既存のテーブルの日付と選択した日付を比較する必要があります。私はasp.netアプリケーションを開発しており、既存のテーブルに新しいレコードを挿入しようとしています。そのasp.netフォームでajaxカレンダーエクステンダーを使用しています。選択した日付を既存の日付と比較する必要があります新しいレコードを追加する前でも、グリッドビューに同じ日付を含むレコードを表示します。
4 に答える
どこに問題があるのか全くわかりません…。
DECLARE @YourDate DATETIME
SET @YourDate = '2010-11-09'
SELECT (list of columns)
FROM dbo.YourTable
WHERE SomeDateColumn = @YourDate
注意が必要な主な問題: バージョン 2005 までの SQL Server ではDATETIME
、名前が示すように日付と時刻の両方を格納するデータ型しかないため、正確な一致はミリ秒まで一致します。 ... 多くの場合、これはあなたが本当に望んでいるものではありません。
あなたが達成しようとしていることと、あなたが抱えている問題について詳しく説明していただけますか??
DATE 要素の等価性のみに関心があり、列値内に存在する時間を無視する場合は、次のような句を使用します。
DECLARE @DateParam DATETIME
SET @DateParam = '20101109'
SELECT SomeField
FROM SomeTable
WHERE DateField >= @DateParam AND DateField < DATEADD(dd, 1, @DateParam)
この例では、指定された日の任意の時点で DateField 列に日付 (& 時刻) があるすべてのレコードを検索します。
私はmarc_sとAdaTheDevのソリューションを完全に使用します(そしてそれらとあなたが必要とするものについての私の理解-あなたはあなたの質問であなたの選択した日付が何であるかを定義する必要があります)
ただし、選択した入力がyyyy-mm-dd(marc_s)またはyyyymmdd(adathedev)の形式の日付(他の回答と同様)であると仮定すると、次の代替方法も機能するはずです。
DECLARE @Date DATETIME
SET @Date = '2010/10/10'
SELECT *
FROM SomeTable
WHERE CONVERT(VARCHAR(10), DateField, 126) = @Date
日時を宣言し、日付のみを使用して設定すると、時刻は12:00:00.000に設定されます。したがって、等式演算子を使用すると、時間と完全に一致するものが検索されます(GETDATE()などを使用してテーブルに挿入する場合はほとんどありません)。
私のソリューションは、クエリを実行するときにデータベースのフィールドから時間をとるだけです。しかし、私はまだ他の解決策を使います。これは単なる代替手段です。
他の人に+1。