SQL Server で前月のレコードを取得する方法
タイムスタンプ フィールドを含むデータベース テーブルを操作する場合、多くの場合、前月など、特定の期間のレコードを取得します。 SQL Server には、これを実現するためのさまざまな方法が用意されています。
問題:
レコードがその範囲内にあるメンバー テーブルから、date_created 列に基づいてレコードを抽出する必要があります。先月。たとえば、現在の日付が 2010 年 1 月 3 日の場合、2009 年 12 月 1 日から 2009 年 12 月 31 日までのレコードを取得する必要があります。
課題:
一部の既存のソリューションでは、インデックスを無視したり、意図した範囲外のデータを選択したりする問題が発生します。
正しいアプローチ:
これらの落とし穴を回避するために、推奨されるアプローチでは不等号比較を利用して正確なデータ取得を保証します。修正されたクエリは次のとおりです。
DECLARE @startOfCurrentMonth DATETIME SET @startOfCurrentMonth = DATEADD(month, DATEDIFF(month, 0, CURRENT_TIMESTAMP), 0) SELECT * FROM Member WHERE date_created >= DATEADD(month, -1, @startOfCurrentMonth) AND date_created < @startOfCurrentMonth
このメソッドは、当月の始まりを計算し、不平等比較を使用して前月のレコードのみを含めます。このアプローチでは、インデックスを使用し、不必要な比較を回避することで、効率的で正確な結果が得られます。
以上がSQL Server で先月のレコードを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。