我希望有这个功能,我可以通过输入一个月和当前年份从数据库中选择所有记录
我的数据库日期格式为' YYYY-MM-DD'
例如我选择june for month并输入,它将搜索当前年份的june1-june30。
答案 0 :(得分:1)
我没有收到明确答案,所以我只是提出了所有的想法,我想出了类似的东西,
"SELECT * FROM attendance WHERE month(DATE) = ".$month." AND year(DATE) = YEAR(now())
其中月份输入是月份中的数字,例如1 - jan, 2 - feb,
等。
答案 1 :(得分:0)
您可以尝试为以下
构建查询select * from thetable where monthname(date_field) = 'February'
或月份(),如果你想返回一个数字
select * from thetable where month(date_field) = 2
答案 2 :(得分:0)
这是我的解决方案。您可以将Year保留为NULL,但是您可以根据需要选择年份。
测试数据
IF OBJECT_ID('tempdb..#TestData') IS NOT NULL DROP TABLE #TestData
GO
CREATE TABLE #TestData (ID int, DateField datetime)
INSERT INTO #TestData (ID, DateField)
VALUES
(1,'2016-01-01')
,(2,'2016-02-02')
,(3,'2016-01-25')
,(4,'2016-02-16')
,(5,'2015-01-12')
,(6,'2015-01-20')
查询
DECLARE @MonthVariable int; SET @MonthVariable = '1'
DECLARE @YearVariable int; SET @YearVariable = '2016'
SELECT
ID
,Datefield
FROM #TestData
WHERE DATEPART(mm,DateField) = @MonthVariable
AND (DATEPART(yy,DateField) = @YearVariable
OR @YearVariable IS NULL)
输出
ID Datefield
1 2016-01-01 00:00:00.000
3 2016-01-25 00:00:00.000
如果您总是想要当年,那么您可以这样做;
DECLARE @MonthVariable int; SET @MonthVariable = '1'
SELECT
ID
,Datefield
FROM #TestData
WHERE DATEPART(mm,DateField) = @MonthVariable
AND DATEPART(yy,DateField) = DATEPART(yy,GETDATE())
答案 3 :(得分:0)
SELECT * FROM TABLE WHERE MONTH(date_field) = MonthVariable AND YEAR(date_fied) = YEAR(GETDATE())
GETDATE()返回当前日期和年份 假设发往月份的变量(MonthVariable)包含每月报告的数字