2012-09-11 89 views

回答

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函數。

+0

謝謝!這工作。 – Colin

0

你可以做這樣的事情

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

這是Oracle,可以肯定的MySQL SQLite的或其他數據庫有這個功能,

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') 
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; 

如果你不得不尋找未來的日期,或者過去一年以上,你也可以很容易地擴大這個範圍。

其他RDBMS將提供類似的功能來檢查您的日期的年份。