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 中,您可以使用 YEAR
、MONTH
和 DAY
而不是 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 当前月/年问题的主要内容,如果未能解决你的问题,请参考以下文章