SQL Server - Conseguir saber la fecha del ultimo domingo de marzo a partir de una fecha

 
Vista:
sin imagen de perfil

Conseguir saber la fecha del ultimo domingo de marzo a partir de una fecha

Publicado por Luis (3 intervenciones) el 08/04/2016 14:38:27
Hola.

A ver si alguien me puede ayudar.
Necesito a través de una función o una query obtener la fecha del ultimo domingo del mes de marzo.
la fecha de entrada seria en formato

2015-05-14 04:37:20.000

el resultado que espero 2015-03-29

Muchas gracias.
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

Conseguir saber la fecha del ultimo domingo de marzo a partir de una fecha

Publicado por Isaias (4558 intervenciones) el 08/04/2016 21:45:40
¿Y que relacion tiene la fecha 2015-05-14 MAYO?, con MARZO

Veamos:

DECLARE @MiFecha datetime ='20150301'
SELECT DATEADD(dd,-(DATEPART( WEEKday , DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,convert(datetime,@MiFecha,112))+1,0)))-1),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,convert(datetime,@MiFecha,112))+1,0)))
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
sin imagen de perfil

Conseguir saber la fecha del ultimo domingo de marzo a partir de una fecha

Publicado por Luis (3 intervenciones) el 11/04/2016 10:48:58
Hola Isaias,

Gracias por contestar tan rápido. Aun no he probado lo que me has mandado, en cuanto lo pruebe te digo algo.
Te explico la idea de lo que quiero conseguir.

Yo leo una serie de registros en los que hay una serie de datos entre ellos varias fechas que están en Unix Timestamp (1456185459 ), el problema viene en que esas fechas son en UTC Date creo que se llama hora universal (no soy muy experto en este tema).
Lo que necesito es convertir esa fecha en formato Unix Tiemstamp a formato fecha legible (23-02-2016 00:57:39), pero teniendo en cuenta los horarios de verano,
Mi idea es , si los horarios cambian el ultimo domingo de marzo a las 02:00:00 al horario de verano y el ultimo domingo de octubre a las 03:00:00 en horario de invierno, al coger cada una de las fechas del registro pasarla por una función que compruebe si dicha fecha esta dentro del rango de fechas que están en el horario de invierno o por el contrario en el de verano del año de esa fecha. Si esta dentro del horario de verano + 3600'' si esta dentro del horario de invierno + 1800''.

Ya se que una cosa es pensarlo y otra hacerlo, pero esa es la idea para que comprendas la relación entre la fecha del 14 de mayo (que es una de ejemplo que cogí) y el ultimo domingo del mes de marzo.

Aquí convierto la fecha y le sumo los 3600'' ya que estamos en horario de verano, pero en el próximo cambio de hora tengo que acordarme de volver a cambiarlo.
Por eso quería una función que me lo hiciera todo automáticamente, dándole el valor inicial que me hiciera la conversión, el cambio de formato y tuviera en cuenta el cambio horario para sumarle una hora o dos según correspondiera..

,CASE call_req.open_date WHEN NULL THEN ' ' ELSE (CONVERT(VARCHAR,DATEADD(s, call_req.open_date + 3600, '1970-01-01'), 105) + ' ' + CONVERT(VARCHAR, DATEADD(s, call_req.open_date + 3600,'1970-01-01'), 108)) END AS [Fecha de apertura]

Y esa es la explicación.

Cualquier ayuda sera bienvenida.
Gracias de nuevo y un saludo.
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
sin imagen de perfil

Conseguir saber la fecha del ultimo domingo de marzo a partir de una fecha

Publicado por Luis (3 intervenciones) el 11/04/2016 11:20:40
Buenas Isaias, he probado el SELECT y me da esto:

DECLARE @MiFecha datetime
set @MiFecha = '20150301'

SELECT DATEADD(dd,-(DATEPART( WEEKday , DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,convert(datetime,@MiFecha,112))+1,0)))-1),DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,convert(datetime,@MiFecha,112))+1,0)))


2015-03-30 23:59:59.000

Esperaba 2015-03-29 00:00:00.000

¿Sabes porque puede ser?

Muchas gracias por tu interés.

Un saludo.
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

Conseguir saber la fecha del ultimo domingo de marzo a partir de una fecha

Publicado por Isaias (4558 intervenciones) el 11/04/2016 19:16:10
¿En que motor de base de datos lo estas ejecutando?

A mi me da:

2015-03-29 23:59:59.000
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

Conseguir saber la fecha del ultimo domingo de marzo a partir de una fecha

Publicado por Progrmador mysql (1 intervención) el 10/07/2017 19:18:33
He programado un aplicación en MYSQL UTILIZANDO UNIX_TIEMESTAMP
ahora que han cambiado al hora de verano, me doy cuenta de que las fechas en invierno están adelantadas una hora!!
todas mal!!! vaya cagada!!!

Recomiendo NO UTILIZAR timestamps en SQL !!!

Porqué utilice tiemestmps en vez de datetime?? porque quería calcular tiempos de conexión entre dos fechas y con timestamp me pareció mas fácil solo al tener que realizar una resta :

segundos de conexión = timestamp cierre sesión - timestamp inicio de sesión

Total, con lo de los cambios de hora de verano e invierno salen todas las fechas de invierno mal y cuando sea invierno saldran todas las fechas de verano mal !!!

timestaps suckss!!
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