Para el primer día de la semana puede ser un poco complicado, dependiendo de sus necesidades reales (si desea obedecer la configuración de la fecha del primer usuario o no, use el domingo independientemente de la configuración, etc.), vea esta pregunta : Get first day of week in SQL Server. Esta es una manera de hacerlo:
DECLARE
@today DATE = CURRENT_TIMESTAMP,
@y DATE,
@m DATE,
@w DATE;
SELECT
@y = DATEADD(YEAR, DATEDIFF(YEAR, 0, @today), 0),
@m = DATEADD(MONTH, DATEDIFF(MONTH, 0, @today), 0),
@w = DATEADD(DAY, 1-DATEPART(WEEKDAY, @today), @today);
SELECT
[First day of year] = @y,
[First day of month] = @m,
[First day of week] = @w;
Cualquiera que usted está después, se pueden utilizar en la consulta, por ejemplo, para el año actual se debería utilizar:
SELECT TicketCount = COUNT(TicketID)
FROM dbo.Ticket
WHERE DtCheckOut >= @y;
realmente no cree necesario que la parte < de la consulta, si usted está tratando de obtener un conteo hasta ahora. ¿Cuántas entradas habrá salido mañana si estoy ejecutando la consulta hoy? Si desea protegerse contra la que se puede utilizar:
SELECT COUNT(TicketID)
FROM dbo.Ticket
WHERE DtCheckOut >= @y
AND DtCheckOut < DATEADD(DAY, 1, @now);
Usted puede que sea un poco más dinámica y pase un parámetro que dice 'que va del año', 'MTD' o 'DMD', por ejemplo,
CREATE PROCEDURE dbo.CountTickets
@Range CHAR(3) = 'YTD'
AS
BEGIN
SET NOCOUNT ON;
-- you may want to handle invalid ranges, e.g.
IF @Range NOT IN ('YTD', 'MTD', 'WTD')
BEGIN
RAISERROR('Please enter a valid range.', 11, 1);
RETURN;
END
DECLARE
@today DATE = CURRENT_TIMESTAMP,
@start DATE;
SELECT
@start = CASE @range
WHEN 'YTD' THEN DATEADD(YEAR, DATEDIFF(YEAR, 0, @today), 0)
WHEN 'MTD' THEN DATEADD(MONTH, DATEDIFF(MONTH, 0, @today), 0)
WHEN 'WTD' THEN DATEADD(DAY, 1-DATEPART(WEEKDAY, @today), @today)
END;
SELECT
Range = @range,
TicketCount = COUNT(TicketID)
FROM dbo.Ticket
WHERE dtCheckOUt >= @start;
END
GO
¿Desea los totales de los tres en la misma consulta? ¿Qué significa para ti el primer día de la semana? –
Lo sentimos, no hay tres consultas diferentes, el objetivo similar es todo ... El primer día de la semana (para esto) es el domingo. – Fuginator
Ah, y para ser más claro, quiero COUNT() la columna TicketID ... – Fuginator