SQL 当前月/年问题

Posted

技术标签:

【中文标题】SQL 当前月/年问题【英文标题】:SQL Current month/ year question 【发布时间】:2011-07-13 20:36:05 【问题描述】:

所以我有一个分解月份和年份的表格,例如名为 Month 的字段中有数字 7(本月),Year 字段有 2011。还有额外的月份年份等。我怎么能查询这个以显示当前的年份、月份?

【问题讨论】:

这是什么类型的数据库? @Abe Miessler:我将其标记为 SQL Server,因为 OP 之前的所有问题要么使用 SQL Server 语法,要么接受了这样的答案。并且 OP 声明以 cmets 为目标 2005+:***.com/questions/5478386/… 【参考方案1】:

在 SQL Server 中,您可以使用 YEARMONTHDAY 而不是 DATEPART(至少在 SQL Server 2005/2008 中,我不确定 SQL Server 2000 年及以上)

我更喜欢使用这些“短格式”,因为对我来说,YEAR(getdate())DATEPART(yyyy, getdate()) 打字更短,阅读效果更好。

所以你也可以像这样查询你的表:

select *
from your_table
where month_column = MONTH(getdate())
and year_column = YEAR(getdate())

【讨论】:

【参考方案2】:

这应该适用于 SQL Server:

SELECT * FROM myTable
WHERE month = DATEPART(m, GETDATE()) AND
year = DATEPART(yyyy, GETDATE())

【讨论】:

【参考方案3】:

这应该在 mysql 中工作

SELECT * FROM 'my_table' WHERE 'month' = MONTH(CURRENT_TIMESTAMP) AND 'year' = YEAR(CURRENT_TIMESTAMP);

【讨论】:

你应该提到这是用于哪个数据库 你的版本和我的一样吗?为什么我需要提到一个分贝? :s 这是否适用于 Oracle、DB2、MySQL、PostgreSQL、SQLite、Paradox、MS-SQL Server?有这些吗?所有这些?都不是?其中一些? 对不起,现在我明白了,你的意思是 SQL 实现是为了什么。应该适用于 MySql 5.1 :-)【参考方案4】:

怎么样:

Select *
from some_table st
where st.month = to_char(sysdate,'MM') and
    st.year = to_char(sysdate,'YYYY');

应该在 Oracle 中工作。你用的是什么数据库?我问是因为并非所有数据库都具有相同的日期函数。

【讨论】:

【参考方案5】:
DECLARE @CMonth int=null
DECLARE @lCYear int=null

SET @lCYear=(SELECT  DATEPART(YEAR,GETDATE()))
SET @CMonth=(SELECT  DATEPART(MONTH,GETDATE()))

【讨论】:

【参考方案6】:

选择 * 从你的表 其中 MONTH(mont_year) = MONTH(NOW()) 和 YEAR(mont_year) = YEAR(NOW());

注意:(month_year) 表示您的列包含日期格式。我认为这将解决您的问题。如果该查询不起作用,请告诉我。

【讨论】:

您对 3 多年前接受的答案没有添加任何内容,实际上您的答案并未解决 OP 中的架构。

以上是关于SQL 当前月/年问题的主要内容,如果未能解决你的问题,请参考以下文章

从 SQL Server 中的当前日期获取当前学年

月份和年份的 SQL 查询

SQL获取当前日期的年月日时分秒数据

一年又36个旬,想问下SQL SERVER如何判断当前日期是第几个旬

Hive SQL 求环比同比数据

Sql Sever语句 (续2)