es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Uso la fecha de ayer en la cláusula WHERE con tiempo específico.

Quiero seleccionar un valor utilizando la fecha de ayer con una hora específica. Aquí está mi ejemplo: Entonces, quiero reemplazar la variable ayer con la fecha de ayer pero especificar una hora específica.

select Flow, Sum(Morning) Morning, Sum(PM) PM, Sum(Night) Night, Count(*) Total
from [dbo].[MISSION]
cross apply (values (Iif(QUELLE in ('Récéption_14','Récéption_21'),'Flow 1',
                        Iif(QUELLE in ('Récéption_17','Récéption_16'),'Flow 2','Flow3'))))f(Flow)
cross apply (values ( Convert(time, [START_DATE] )))v(T)
cross apply (
    select
        case when T >= **FECHADEAYER:'06:00:00'** and T < **FECHADEAYER:'11:00:00'** then 1 else 0 end Morning,
        case when T >=**FECHADEAYER:'11:00:00'** and T < **FECHADEAYER:'22:00:00'** then 1 else 0 end PM,
        case when T >=**FECHADEAYER:'22:00:00'** and T < **FECHADEAYER:'06:00:00'** then 1 else 0 end Night
)c
group by Flow

Gracias

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para seleccionar un valor utilizando la fecha de ayer con una hora específica, puede reemplazar los marcadores de posición YESTERDAYDATE con la fecha y hora reales que desea utilizar. Aquí hay un ejemplo:

    SELECT Flow, SUM(Morning) Morning, SUM(PM) PM, SUM(Night) Night, COUNT(*) Total
    FROM [dbo].[MISSION]
    CROSS APPLY (VALUES (IIF(QUELLE IN ('Réception_14','Réception_21'),'Flow 1',
                            IIF(QUELLE IN ('Réception_17','Réception_16'),'Flow 2','Flow3')))) f(Flow)
    CROSS APPLY (VALUES (CONVERT(TIME, [START_DATE]))) v(T)
    CROSS APPLY (
        SELECT
            CASE WHEN T >= DATEADD(DAY, -1, GETDATE())+'06:00:00' AND T < DATEADD(DAY, -1, GETDATE())+'11:00:00' THEN 1 ELSE 0 END Morning,
            CASE WHEN T >= DATEADD(DAY, -1, GETDATE())+'11:00:00' AND T < DATEADD(DAY, -1, GETDATE())+'22:00:00' THEN 1 ELSE 0 END PM,
            CASE WHEN T >= DATEADD(DAY, -1, GETDATE())+'22:00:00' OR T < GETDATE()+'06:00:00' THEN 1 ELSE 0 END Night
    ) c
    GROUP BY Flow
    

    En este ejemplo, DATEADD(DAY, -1, GETDATE()) se utiliza para obtener la fecha de ayer, y se concatena con la hora específica que desea utilizar (por ejemplo, '06:00:00'). Puede ajustar las horas específicas para adaptarse a sus necesidades.

Comments are closed.