2016-06-22 2 views
0

я хочу, чтобы иметь эту функцию, где я могу выбрать все записи из базы данных, вводя только месяц и текущий годВыбор диапазона дат, используя месяц и год код воспламенитель

мой формат даты базы данных «YYYY-MM-DD '

и, например, я выбираю июнь на месяц и вхожу, он будет искать june1-june30 текущего года.

+0

ГДЕ DATEPART (год, DateField) = YearVariable И DATEPART (мм, DateField) = MonthVariable –

+0

я хочу год быть в текущем году без ввода его –

+0

I «Я только что отправил свой код в качестве ответа, посмотрим, соответствует ли это вашим требованиям –

ответ

1

У меня нет однозначного ответа полученый так я просто поставить все идеи и я придумал что-то вроде этого,

"SELECT * FROM attendance WHERE month(DATE) = ".$month." AND year(DATE) = YEAR(now())

, где месяц ввод число от месяца, например 1 - jan, 2 - feb, т.д.

0

Вы можете попробовать строить запрос для ниже

select * from thetable where monthname(date_field) = 'February' 

или месяц(), если вы хотите, чтобы вернуть номер

select * from thetable where month(date_field) = 2 
+0

, как насчет года? я хотел, чтобы он был в текущем году без ввода чего-то –

+0

ваш ответ правильный, но мне нужен текущий год –

0

Здесь будет мое решение. Вы можете оставить год как NULL, но тогда у вас есть возможность выбрать год, если хотите.

Test Data

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()) 
0
SELECT * FROM TABLE WHERE MONTH(date_field) = MonthVariable AND YEAR(date_fied) = YEAR(GETDATE()) 

GETDATE() возвращают текущий день и так год и
при условии, что переменная предначертано месяц (MonthVariable) содержит число регистрируемых в месяц

Смежные вопросы