DD-MMM-YYYY 形式の日付のセットがあります。年は重要ではないため、日付の DD-MMM 部分のみを使用して日付を比較できるようにする必要があります。
どうすればこれを達成できますか?
私はDATEPART関数を読んでみました(編集:明らかにうまくいかないでしょう)が、理論的にはDDまたはMMM部分のいずれかを返すことしかできず、両方を一度に返すことはできません。
編集: oracle タグを追加しました。ごめん。
日付フィールドの例: 01-MAR-1994
列がタイプの場合DATE
、フォーマットはありません。
私があなたを正しく理解していれば、あなたはその部分だけを表示したいので、関数でmon-dd
変換する必要があります
。TO_CHAR
select to_char(your_date_column, 'mon-dd') from your_table
DATEPART を使用しようとしたため、SQL Server または Oracle を使用していると仮定すると、 関数DAY()
とMONTH()
関数を使用して日と月を取得できます。繰り返しますが、比較している日付が 2 つの異なるテーブルにあると仮定すると、次のようになります。
SELECT MONTH(t1.date), DAY(t2.date)
FROM table AS t1
INNER JOIN table2 AS t2
ON t1.key = t2.key
WHERE MONTH(t1.date) = MONTH(t2.date)
AND DAY(t1.date) = DAY(t2.date)
編集:同じテーブル内の行を比較するだけの場合は、非常に単純なクエリのみが必要です。
SQLフィドル
select id, TO_CHAR(most_recent, 'mon-dd')
from (
select id, MAX(date1) AS most_recent
from table1
group by id
)
月と日を 1 つの整数に結合することもできます。
EXTRACT(MONTH FROM datecol) * 100 + EXTRACT(DAY FROM datecol) AS MonthDay
そうすれば、並べ替えと比較が簡単になります。
select FORMAT(yourcoulmn_name, 'dd/MM') from table