1

Sql Server 2008 を使用しています。テーブルに Date という名前の列があり、特定の日付のデータを取得したいのですが、WHERE 条件でこの Date を指定する必要があります。

たとえば、指定された日付の特定の月のレコードを取得したい場合、この日付を WHERE 条件で使用するにはどうすればよいでしょうか。

DATANAME(MONTH,'@Date') 

クエリでこのように指定すると、指定された DATE から月を取得できます。同じ方法で、WHERE 条件を次のように入れてみました。

WHERE DATE=    DATANAME(MONTH,'@Date')

ここで変換エラーが報告されます...特定の月のデータを表示するにはどうすればよいですか、誰でも助けてもらえますか

4

5 に答える 5

3

テーブルに 1 か月分のデータが必要な場合は、間隔をチェックする必要があります。列に関数を適用している場合、クエリは日付列にインデックスを使用できません。

このようなものを使用して、2012 年 4 月のデータを取得します。

-- The date parameter
declare @Date datetime
set @Date = '2012-04-11'

declare @FromDate datetime
declare @ToDate datetime

-- set FromFate to first of april
set @FromDate = dateadd(month, datediff(month, 0, @Date), 0)
-- set ToDate to first of may
set @ToDate = dateadd(month, 1+datediff(month, 0, @Date), 0)

select *
from YourTable
where [Date] >= @FromDate and [Date] < @ToDate
于 2012-04-13T08:51:29.187 に答える
1

最初: 変数から '' を削除します。「@Date」ではなく、@Date

特定の月の日付を検索したい場合。(年式についても覚えておく必要があります)

WHERE DATANAME(MONTH, @Date) = 'April'

正確な日付を知りたい場合:

WHERE DATE = @date
于 2012-04-13T08:06:07.300 に答える