0

日付形式が「yyyyymmdd」で、データ型が varchar(8) のデータベースがあります。この場合、1 か月分のデータを検索する必要がある場合、以下のようなコードを記述していました。

  select * from table1
  where Date Between (convert(varchar(6),getdate(),112)+'01')
  AND (convert(varchar(6),getdate(),112)+'31'))

今、日付形式が「dd/mm/yyyy」で日付型が varchar(10) の新しいテーブルがあり、正確な日付を指定せずにテーブルから 1 か月分のデータを抽出したいと考えています。開始日を現在の月の最初の日とし、終了日を現在の月の最終日とします。

しかし、日付形式が「dd/mm/yyyy」になったため、同じことを行う方法がわかりません。

4

2 に答える 2

2

まず、日付をデータ型ではdateなくデータ型として保存する必要がありますvarchar

使用できますMONTH()

SELECT *
FROM yourTable
WHERE MONTH(convert(datetime, dt, 103)) = MONTH(getdate()) -- or month you want

またDATEPART()

SELECT *
FROM yourTable
WHERE DatePart(month, convert(datetime, dt, 103)) = DatePart(month, getdate())

デモで SQL Fiddle を参照してください

これらはどちらも、8、9、10 の値を取得し、MONTH()それを必要な月と比較します。

于 2012-08-28T11:27:01.180 に答える
2

デモ 2

デモ1

サンプル
select idcol,namecol,datecol, from table where datepart(mm,datecol)='9'

編集:

select * from dummy where datepart(mm,dob)= datepart(mm,getdate()) http://sqlfiddle.com/#!3/50efd/7

彼らは別の年で同じ月の可能性があるので、追加することで年を気にする必要もありますand datepart(yyyy,dob)=datepart(yyyy,getdate())

于 2012-08-28T11:31:57.247 に答える