Что касается этого SQL-запроса, то как я могу вывести список из 28/30/31 дней в соответствии с выбором пользователем определенного месяца и года
Проблема в том, что я застрял на том, как вывести 28/30/31 дней в соответствии с выбором пользователем определенного месяца и года, вот мой код:
Что я уже пробовал:
declare @FromDate as datetime; declare @ToDate as datetime; declare @OperID as varchar(20) = 'OP1'; declare @Year as int = 2018 declare @Month as int = 1 set @FromDate = convert(date,convert(varchar,@Year) + '-' + convert(varchar,@Month) + '-01') set @ToDate = dateadd(d,-1,DATEADD(m, 1, @FromDate)) select Branch_no, operid, clock_date, [I], [O] from ( select Branch_no, operid, convert(date, clock_date) as clock_date, convert(time, clock_date) as clock_time, clock_type, Workstation_no from ROSTER_TIMECLOCK where Clock_date >=CONVERT(DATETIME, @FromDate, 102) and Clock_date <=CONVERT(DATETIME, @ToDate, 102) and OperID=@OperID ) as TheClock PIVOT ( min(clock_time) FOR clock_type in ([I],[O]) ) as ThePivot
RedDk
Qu'est-ce que c'est "ROSTER_TIMECLOCK"?
Member 11850495
ROSTER_TIMECLOCK-это таблица, в которой я выполняю запрос.
Richard Deeming
@FromDate
и @ToDate
уже есть datetime
ценности, так что в этом нет необходимости CONVERT
их.
Кроме этого, я не вижу в вашем коде ничего, что могло бы генерировать фиксированное количество дней. Вы выбираете все записи, которые попадают в течение месяца, так в чем же проблема?
Herman<T>.Instance
--> WHERE MONTH(Clock_Date) = @Month AND YEAR(Clock_Date) = @Year AND OperID=@OperID
Затем вы выбираете все месячные данные за данный год, так что 28/29/30 или 31 день-это не проблема!
Member 11850495
Благодарю вас сэр