Oracle a SQL Server: conversión y formato de fecha

Estoy en proceso de migrar nuestro almacén de datos de Oracle a SQL Server 2012.

Una pieza de código que uso cien veces al día en Oracle es cambiar el formato de fecha para una consulta usando algo como:

To_Char(entry_date,'WMMYY') = 30612 

Lo anterior me permite tomar la fecha (formato predeterminado = DD-MON-YY eg 01-JAN-12) y cambie el formato de la semana especificada (la tercera semana de junio en el ejemplo anterior) simplemente listando la semana deseada.

En mi opinión, lo anterior es muy simple y fácil de usar. Puedo cambiarlo al formato que quiera (MMAA, MMAAAA), etc. sin ningún problema. Hasta ahora no puedo encontrar una manera fácil de hacer esto en SQL Server 2012 y realmente me está empezando a molestar. Es datetime2 en SQL Server.

estoy encontrando cosas para CAST(), CONVERT(), DATEPART() pero por lo que he visto, se requiere todo tipo de codificación extravagante y códigos numéricos (como 101, 102, no entiendo por qué es así) que me parecen extraños y demasiado complicados.

¿No he encontrado lo que estoy buscando todavía o es así con SQL Server? Solo quiero poder hacer algo simple como obtener todos los datos que se ingresaron durante el mes de junio o la segunda semana de octubre sin tener que agregar 200 caracteres adicionales de código.

preguntado el 12 de junio de 12 a las 21:06

Pasar de Oracle a SQL Server es un gran paso atrás en lo que respecta al manejo de fechas (y muchas otras cosas). Por lo que puedo decir, deberá escribir su propia función para esto:

1 Respuestas

Es un interruptor. Está utilizando SQL Server 2012, así que investigue FORMAT() función. http://technet.microsoft.com/en-us/library/hh213505%28SQL.110%29.aspx No lo soy, así que lamentablemente no puedo probar nada para usted, pero hay algunas mejoras en el formato de fecha. Para aquellos de nosotros que no lo somos, hay cosas que puedes hacer que serán geniales, una vez que te acostumbres a ellas. Esto no es específico de SQL Server, pero la semana del mes varía de una organización a otra, por lo que tendría que definirlo para obtener un buen ejemplo para la tercera semana del mes, etc. Además, al usar DATEPART con argumentos de semana o día, lo que se devuelve está determinado por la configuración del primer día de la semana (1 -7 - @@DATEFIRST). Los estilos numéricos para CONVERT (de nuevo echa un vistazo FORMAT() si estás en 2012) definitivamente no son tan intuitivos, pero probablemente usarás los mismos estilos una y otra vez, y los memorizarás rápidamente. Si está configurado en 'WMMYY' o simplemente usa algo una y otra vez que no tiene una solución integrada satisfactoria, cree una UDF.

datos ingresados ​​durante el mes de junio

   DATEPART(mm,@date) = 6

mes actual

  month(getDate())

o esta semana

  DATEPART(ww,GetDate())

Respondido el 13 de junio de 12 a las 02:06

Gracias por los comentarios chicos. No me di cuenta de que SQL Server era un paso atrás de Oracle en lo que respecta al manejo de fechas. Simplemente parece de sentido común y estoy seguro de que hay miles de personas que usan el servidor SQL para hacer exactamente lo que necesito. Parece que solo será un pequeño ajuste. Buscaré FORMAT(). Gracias de nuevo. - user1452180

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.