如何检查日期是否在此日历年或之前的日历年内。
即。今年12月31日> myDate>去年1月1日
答案 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将提供类似的功能来检查您的日期年份。