日付が今年または前の暦年内にあるかどうかをどのように確認しますか。
IE今年12月31日>myDate>昨年1月1日
標準のSQLの方法は、EXTRACTを使用することです。
select *
from t
where extract(year from t.thedate) = extract(year from CURRENT_TIMESTAMP) or
extract(year from t.thedate) = extract(year from CURRENT_TIMESTAMP) - 1
すべてのデータベースがこれらの機能をサポートしているわけではありません。しかし、すべてに何らかの方法で日付を抽出する方法があります。たとえば、多くの人がこのyear
機能をサポートしています。
あなたはこのようなことをすることができます
SELECT * FROM YourTable
WHERE TO_DATE("FROM-DATE") < DateColumn AND TO_DATE("END-DATE") > DateColumn
これはOracleにあり、MySQLSQLiteまたは他のデータベースにこの機能があることを確認してください。
SQL Serverの場合、次を使用できますDATEDIFF
。
WHERE DATEDIFF(year,myDate,CURRENT_TIMESTAMP) in (0,1)
DATEDIFF(year,...
日付間の年の遷移の数を効果的に計算します(言い換えると、深夜の大晦日の数)。
インデックスがクエリに役立つ可能性のある大きなテーブルの場合、代わりに変換して、これらの計算値CURRENT_TIMESTAMP
と比較する必要があります。myDate
WHERE myDate >= DATEADD(year,DATEDIFF(year,'20010101',CURRENT_TIMESTAMP),'20000101') AND
myDate < DATEADD(year,DATEDIFF(year,'20010101',CURRENT_TIMESTAMP),'20020101')
SQL Serverでは、次のことができます。
DECLARE @yourDate DATETIME;
SELECT @yourDate = '2012-06-02';
SELECT CASE YEAR(@yourDate)
WHEN YEAR(GETDATE()) THEN 'Same Year'
WHEN YEAR(GETDATE()) - 1 THEN 'Last Year'
ELSE 'Other Year'
END AS YourColumn;
将来の日付、または1年以上前の日付を探す必要がある場合は、これを簡単に拡張することもできます。
他のRDBMSは、日付の年をチェックするための同様の機能を提供します。