SQL检查日期是否在此日历年或上一个日历年内

时间:2012-09-11 14:17:45

标签: sql

如何检查日期是否在此日历年或之前的日历年内。

即。今年12月31日> myDate>去年1月1日

4 个答案:

答案 0 :(得分: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功能。

答案 1 :(得分:0)

你可以做这样的事情

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

这是在Oracle中,非常确定MySQL SQLite或其他数据库具有此功能,

答案 2 :(得分: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')

答案 3 :(得分: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将提供类似的功能来检查您的日期年份。