SQL Server - Función de Fecha

 
Vista:

Función de Fecha

Publicado por kperezf (18 intervenciones) el 31/10/2019 15:41:33
Buenos días;
Estoy realizando dos funciones donde tengo que:

La primera que dada una fecha X nos regrese el primer día del año y la segunda dada la misma fecha nos regrese el último día del año.Utilizar únicamente tipos de dato de fecha tanto para los parámetros como para el resultado.

Ejemplo:

Dada la fecha de hoy la primera función debería de devolver 01/01/2019
Dada la fecha de hoy la segunda función debería de devolver 21/12/2019
Puede ser cualquier fecha valida.
La función debe poder recibir cualquier tipo de fecha válida.

He declarado una variable datetime, realizando un convert en el select. pero aun no me funciona(aun no he llegado a realizar la función)
Mi SQL Server es 2008 R2:(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Función de Fecha

Publicado por Isaias (4558 intervenciones) el 31/10/2019 18:25:55
Hola

Creo que el siguiente codigo le dara respuesta a su duda, en lugar de GETDATE(), utilice su fecha o variable donde contiene la fecha de la cual desea obtener el primer dia y ultima dia del año

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
-- First/Last Day of the Year:
SELECT      DATEADD(YEAR, DATEDIFF(YEAR, 0,
            DATEADD(YEAR, -1, GETDATE())), 0),
            'First Day of Previous Year'
UNION ALL
SELECT      DATEADD(MILLISECOND, -3, DATEADD(YEAR,
            DATEDIFF(YEAR, 0, DATEADD(YEAR, -1, GETDATE())) + 1, 0)),
            'Last Day of Previous Year'
UNION ALL
SELECT      DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()), 0),
            'First Day of Current Year'
UNION ALL
SELECT      DATEADD(MILLISECOND, -3,
            DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) + 1, 0)),
            'Last Day of Current Year'
UNION ALL
SELECT      DATEADD(YEAR, DATEDIFF(YEAR, 0,
            DATEADD(YEAR,1,GETDATE())), 0),
            'First Day of Next Year'
UNION ALL
SELECT      DATEADD(MILLISECOND, -3,
            DATEADD(YEAR, DATEDIFF(YEAR, 0,
            DATEADD(YEAR, 1, GETDATE())) + 1, 0)),
            'Last Day of Next Year'


¿Que le parece este codigo?

1
2
3
4
5
SELECT
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), 0) AS StartOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, -1) AS LastDayOfYear,
   DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0) AS FirstOfNextYear,
   DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()) + 1, 0)) AS LastTimeOfYear
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Función de Fecha

Publicado por kperezf (18 intervenciones) el 31/10/2019 19:30:53
Excelente estimado;
Tambien me ha costado convertirlo a una Función, solamente requiero de estas consultas
Me pueden ayudar?

SELECT DATEADD(YY, DATEDIFF(YEAR, 0, @Fech), 0) as [Primer día del año]

SELECT DATEADD(MS, -3,DATEADD(YY, DATEDIFF(YY, 0, @Fech) + 1, 0)) as [Último día del año]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Función de Fecha

Publicado por Isaias (4558 intervenciones) el 31/10/2019 19:59:26
¿Como lo quieres aplicar en tu query?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Función de Fecha

Publicado por kperezf (18 intervenciones) el 31/10/2019 20:01:14
Así es estimado.
Pero si me mandas de ambas formas, sería un éxito.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Función de Fecha

Publicado por Isaias (4558 intervenciones) el 01/11/2019 00:48:47
Suponiendo que tu tabla tuviera una columna de tipo DATETIME, entonces

SELECT DATEADD(YY, DATEDIFF(YEAR, 0, MICOLUMNA), 0) AS PRIMER_DIA
FROM MITABLA WHERE......
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Función de Fecha

Publicado por kperezf (18 intervenciones) el 01/11/2019 00:57:44
Buenas noches Isaias;
creo que me explique mal jajajaj
lo que requiero es convertir/crear en una función esas consultas.
Mil disculpa
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Función de Fecha

Publicado por Isaias (4558 intervenciones) el 01/11/2019 17:41:44
Entonces mi pregunta seria, ¿Porque en una funcion?, si lo puede aplicar directamente en su query.

¿Funcion que regrese el PRIMER y ULTIMO dia de la fecha que se le pase a la funcion?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar