0

日付が今年または前の暦年内にあるかどうかをどのように確認しますか。

IE今年12月31日>myDate>昨年1月1日

4

4 に答える 4

0

標準の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機能をサポートしています。

于 2012-09-11T14:21:02.900 に答える
0

あなたはこのようなことをすることができます

SELECT * FROM YourTable
WHERE TO_DATE("FROM-DATE") < DateColumn AND TO_DATE("END-DATE") > DateColumn

これはOracleにあり、MySQLSQLiteまたは他のデータベースにこの機能があることを確認してください。

于 2012-09-11T14:21:37.190 に答える
0

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')
于 2012-09-11T14:23:40.537 に答える
0

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は、日付の年をチェックするための同様の機能を提供します。

于 2012-09-11T14:25:13.450 に答える