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中,很确定MySQL SQLite或其他数据库有这个功能,

于 2012-09-11T14:21:37.190 回答
0

对于 SQL Server,您可以使用DATEDIFF

WHERE DATEDIFF(year,myDate,CURRENT_TIMESTAMP) in (0,1)

DATEDIFF(year,...有效地计算日期之间的年份转换数(或者换句话说,午夜新年前夜的数量)。

对于索引可能有助于查询的较大表,我们需要转换CURRENT_TIMESTAMPmyDate与这些计算值进行比较:

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;

如果您必须查找未来日期或过去一年多的时间,您也可以轻松扩展此日期。

其他 RDBMS 将提供类似的功能来检查日期的年份。

于 2012-09-11T14:25:13.450 回答