FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#1
|
||||
|
||||
To_date
¿Existe en SqlServer alguna función con la funcionalidad del TO_DATE de Oracle?, estoy trabajando en SqlServer 7, pero si la solución solo funciona en 2000 será bienvenida.
A grandes rasgos el TO_DATE de Oracle, convierte un string a un tipo DATE (Fecha+Hora) especificando la máscara del string pasado, por ejemplo: TO_DATE('28/02/2003', 'DD/MM/YYYY') TO_DATE('02/28/2003', 'MM/DD/YYYY') TO_DATE('20030228', 'YYYYMMDD') TO_DATE('28/02/2003 05:45:00', 'DD/MM/YYYY HH:MI:SS') Chagracia!
__________________
Sarackgand in the workshop wrassaraba! |
#2
|
||||
|
||||
Mira en la documentación la sintaxis y parámetros de la función CONVERT.
Por cierto, si hubieses buscado en la documentación de SQL Server la palabra TO_DATE, te hubiese enviado directamente al documento de migración de funciones de Oracle a SQL Server, donde te indica que debes usar las funciones CAST y CONVERT de SQL Server. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
#3
|
||||
|
||||
A mi parecer ni el CAST ni el CONVERT tienen toda la funcionalidad del TO_DATE, ya que el TO_DATE es mucho mas flexible permitiéndonos aclarar la máscara, sin tener que atarnos a una lista de estilos predeterminada como la de SqlServer.
Con el TO_DATE podríamos hacer locuras como TO_DATE('HORA:12 MINUTOS:03 SEGUNDOS:33', '"HORA:"HH" MINUTOS:"MI" SEGUNDOS:"SS'), y sabría de dónde tomar el dato de la hora, minuto y segundo, que desconozco como hacerlas desde SqlServer. Con el cast tendríamos problemas con fechas como 01/02/2003 donde supongo que dependerá de la configuración de la sesión si el mes es 01 o 02. Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#4
|
||||
|
||||
En efecto el CAST es la menos recomendable de todas, y la función CONVERT está limitada a la lista predeterminada.
Para convertir algo como TO_DATE('HORA:12 MINUTOS:03 SEGUNDOS:33', '"HORA:"HH" MINUTOS:"MI" SEGUNDOS:"SS'), en SQL Server tendrias que jugar con el SUBSTRING para sacar las partes de la hora, y construir una de las cadenas que si puede convertir. SET @Variable = 'HORA:12 MINUTOS:03 SEGUNDOS:33' select CAST(SUBSTRING(@Variable, 6, 2) + ':' + SUBSTRING(@Variable, 18, 2) + ':' SUBSTRING(@Variable, 30, 2) as DATETIME) Sin duda es mucho más incomodo. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
|
|
|