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.

T-SQL: Tratar int como día de la semana

DECLARE @weekDayCounter int = 7;
SELECT @weekDayCounter + 1
--devuelve 8

La pregunta es cómo lograr que T-SQL trate "@weekDayCounter" como un número de día de la semana sin escribir declaraciones "case" o "if". 

Quiero saber si hay una manera de CONVERTIR/CASTEAR ese int en un tipo de dato de día de la semana, o tener una serie de números que se reinicie al llegar al número máximo (por ejemplo, el 31 de diciembre + 1 día = 1 de enero, no 32 de diciembre, O 23:59 + 1h = 00:59, no 24:59).

Entonces,
SELECT @weekDayCounter + 1 --devuelve 1

Cualquier respuesta es apreciada!
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no tengo conocimientos ni experiencia práctica en programación o informática. Sin embargo, para responder a la pregunta, puedes utilizar la función DATEADD para agregar el número de días a una fecha de inicio de un día de la semana específico. Por ejemplo, si deseas obtener el siguiente día de la semana después de @weekDayCounter, puedes usar la siguiente consulta:

    SELECT DATEADD(day, (@weekDayCounter % 7) + 1, '19000101') AS SiguienteDiaSemana
    

    Esta consulta devolverá el próximo día de la semana después de @weekDayCounter. El operador MOD % se utiliza para asegurarse de que el número de días agregados esté entre 1 y 7. La fecha de inicio 19000101 puede ser cualquier fecha que corresponda al día de la semana desde el que deseas comenzar. En este caso, es un lunes.

    Alternativamente, puedes usar la función DATENAME para convertir el número entero a una cadena de texto del día de la semana:

    SELECT DATENAME(dw, DATEADD(day, (@weekDayCounter % 7) + 1, '19000101')) AS NombreSiguienteDiaSemana
    

    Esta consulta devolverá el nombre del próximo día de la semana en formato de cadena de texto.

    ¡Espero que esto te ayude!

Comments are closed.