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.

Seleccionar la semana / número de semana ISO a partir de un campo de fecha/hora.

Disculpa, esta puede ser una pregunta básica, pero he estado golpeando mi cabeza contra esto durante una semana.

Tengo un campo de base de datos con el formato “dd/mm/yyyy hh:mm:ss” llamado UpdateTime y se referencia a max(AuditHistory.ActionedDateTime) en la base de datos.

Estoy tratando de identificar la Semana / Semana ISO solo a partir de la parte de fecha de este campo utilizando el conjunto de datos en ReportBuilder3.

Estoy intentando lograr una entrada entera en una columna llamada “WeekNo” que me dé la semana del año en que se realizó una transacción para poder usar esto para agrupar los resultados por año | por número de semana en un informe para la alta dirección.

He intentado muchas combinaciones de:
,DATEPART(WEEK, DAY(max(AuditHistory.ActionedDateTime))) AS WeekNo y
,DATEPART(WEEK, MONTH(max(AuditHistory.ActionedDateTime))) AS WeekNo.

Si uso una fecha estática, por ejemplo, , DATEPART(WEEK, DAY(‘1900-01-20’)) AS WeekNo, retorna perfectamente como “4”, pero no puedo obtener el formato de la parte de fecha correcto para identificar la semana a partir del formato del campo.

Creo que mi problema es hacer que SQL acepte que el campo es “dd/mm/yyyy hh:mm:ss” y obtener la semana a partir del elemento de fecha.

Antes de volverme loco, pensé en preguntar si hay una forma rápida de lograr esto.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para identificar la semana del año a partir de la parte de la fecha del campo UpdateTime en el formato “dd/mm/yyyy hh:mm:ss”, puedes usar la siguiente declaración SQL:

    DATEPART(WEEK, CONVERT(DATE, LEFT(UpdateTime, 10), 103))
    

    Explicación:
    LEFT(UpdateTime, 10) extrae los primeros 10 caracteres del campo UpdateTime, que representa la fecha en formato “dd/mm/yyyy”.
    CONVERT(DATE, LEFT(UpdateTime, 10), 103) convierte la cadena de fecha extraída a un formato de fecha que puede ser utilizado por la función DATEPART. El tercer argumento “103” especifica el formato de entrada como dd/mm/yyyy.
    DATEPART(WEEK, CONVERT(DATE, LEFT(UpdateTime, 10), 103)) devuelve la semana del año correspondiente a la fecha extraída.

    Luego puedes usar esto en tu consulta de informe para llenar la columna WeekNo:

    SELECT ..., 
    DATEPART(WEEK, CONVERT(DATE, LEFT(UpdateTime, 10), 103)) AS WeekNo
    FROM ...
    

Comments are closed.