Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Formato Fecha segun idioma del SQL.Server

Estas en el tema de Formato Fecha segun idioma del SQL.Server en el foro de SQL Server en Foros del Web. Hola: Como bien dice el tema del post tengo un problema con las fechas del SQL.Server, ya que el formato de las fechas es distinto ...
  #1 (permalink)  
Antiguo 25/08/2007, 22:59
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Pregunta Formato Fecha segun idioma del SQL.Server

Hola:

Como bien dice el tema del post tengo un problema con las fechas del SQL.Server, ya que el formato de las fechas es distinto segun el idioma del SQL.Server.

Este es el caso de una aplic.web(asp) que conecta a un SQL.Server en ingles, por ende el formato de la fecha valido es: 'AAAA-MM-DD'. Ahora sucede que quise probar la misma aplic web en otro servidor que tambien tiene el SQL.Server -pero en castellano-, y todas las paginas que leen/escriben fechas del SQL, da err.de conversion de tipo("La conversión del tipo de datos char a smalldatetime generó un valor smalldatetime fuera de intervalo"), porque el formato de fecha para el SQL version español es 'AAAA-DD-MM'.

Entonces, alguien sabe si se puede cambiar la config.de fechas del SQL.Server?

Desde ya muchas gracias a quien pueda aportar algo, ya que si no se puede tendre que modificar el codigo(asp) de mas de 40 paginas aprox.

Saludos
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #2 (permalink)  
Antiguo 27/08/2007, 08:22
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Formato Fecha segun idioma del SQL.Server

Si los estas enviando asi... AAAA-MM-DD no te debe causar problemas, ya que es un formato estandard...(al igual que AAAAMMDD) siempre y cuando lo mandes como caracter y los recibas en una variable datetime....

si estas enviando la fecha desde una variable de tipo Date (por ej, en ASP) hay que verificar que el formato en la aplicacion este correcto...

si posteas el codigo donde mandas a ejecutar tu proceso enviando la fecha como parametro y la linea de creacion del sp donde se esta definiendo el parametro fecha, te podrian ayudar mejor....

Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #3 (permalink)  
Antiguo 27/08/2007, 10:19
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Formato Fecha segun idioma del SQL.Server

Horizonte, SQL SERVER como muchos otros motores de bases de datos, manejan el formato ANSI para los datos de tipo fecha, formato que te recomienda Andres95 (yyyy-mm-dd).
  #4 (permalink)  
Antiguo 28/08/2007, 06:15
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: Formato Fecha segun idioma del SQL.Server

Gracias, ahora hago unas pruebas y les cuento.

Saludos
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #5 (permalink)  
Antiguo 28/08/2007, 08:27
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: Formato Fecha segun idioma del SQL.Server

Hola:

Probe de varias formas pero no hay caso, siempre da error de formato en la fecha(el mismo mencionado arriba).

Si gustan los invito a que hagan la siguente consulta(formato 'AAAA-MM-DD'):
Código:
select cast('2000-08-28 23:59:59' as smalldatetime)as Fecha
y veran que les da el error mencionado antes.

En cambio si ejecutan lo mismo pero en formato 'AAAA-DD-MM' veran que se los toma ok.
Código:
select cast('2000-28-08 23:59:59' as smalldatetime)as Fecha
Si quieren ademas les dejo el codigo(asp) donde se hace la consulta a la BD, y como es de esperar da el error("La conversión del tipo de datos char a smalldatetime generó un valor smalldatetime fuera de intervalo.
"
) cuando ejecuta el query:
Código:
....
FECHA= Request.Form("FechaSQL")
'---La FechaSQL en la pag.anterior se muestra como "2007-08-28"
.....
strSQL = "SELECT usuario,Fecha,Desde FROM dbo.Horas "& _
               "WHERE usuario="&USER&" AND Fecha= '"&FECHA&"' AND Desde='"&H_DESDE&"' "
Set objRS = oConn.Execute(strSQL)
Por ultimo, el tipo de Fecha en la BD es un smalldatetime.

Desde ya muchas gracias a quien pueda aportar algo.
Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #6 (permalink)  
Antiguo 28/08/2007, 09:35
 
Fecha de Ingreso: junio-2007
Ubicación: El Salvador
Mensajes: 21
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Formato Fecha segun idioma del SQL.Server

Yo tengo igual dos servidores con distintos idiomas por defecto en mi caso programa con VB6 y cuando le paso las variables de tipo fecha utilizo dos funciones que me formatean la fecha dependiendo a que server se lo mande:

Por ejemplo tengo la funcion FechaSQL para las fechas que le mando al servidor que esta en español:
Código:
Public Function FechaSQL(ByVal vfecha As String) As String
    ' La fecha la convierte al formato: 'mm/dd/yyyy'
    'sqlserver lo utilizo porque me estoy conectando a un sql server y necesito la fecha
    On Local Error GoTo SQLDateValErr
    '
    If IsDate(vfecha) Then
        ' si es una fecha válida, convertirla
        FechaSQL = "'" & Format$(vfecha, "mm/dd/yyyy") & "'"
    Else
        ' si no es una fecha válida, devolverlo sin modificar
        FechaSQL = vfecha
    End If
    '
    Exit Function
    '
SQLDateValErr:
    ' Si hay error, la fecha por defecto 1-Ene-1980
    Err = 0
    FechaSQL = "'01/01/1980'"
End Function
Claro esto dependerá del formato que necesites en determinado momento.
Y en la cadena de la consulta la utilizo asi:
Código:
sqlstr="select * from tabla where fecha>=" & FechaSQL(txtfecha_inicial.Value)  & "and fecha<=" & FechaSQL(txtfecha_final.Value)
Espero te sirva.

Saludos.
  #7 (permalink)  
Antiguo 28/08/2007, 12:40
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Formato Fecha segun idioma del SQL.Server

Horizonte

Esta consulta

select cast('2000-08-28 23:59:59' as smalldatetime)as Fecha

Da como resultado:

Fecha
------------------------------------------------------
2000-08-29 00:00:00

(1 row(s) affected)

Que conste, es un simple COPY-PASTE

Las fechas NUNCA se comparan con IGUAL (=), debe ser con >= o <=

A menos claro, que hagas un convert:

WHERE CONVERT(CHAR(8), GETDATE(), 112) = '20070828'
  #8 (permalink)  
Antiguo 28/08/2007, 21:26
Avatar de horizonte  
Fecha de Ingreso: octubre-2005
Ubicación: A 50cm del Monitor(el angulo depende del estado de animo)
Mensajes: 148
Antigüedad: 18 años, 6 meses
Puntos: 1
Re: Formato Fecha segun idioma del SQL.Server

Cita:
Iniciado por iislas Ver Mensaje
Horizonte

Esta consulta

select cast('2000-08-28 23:59:59' as smalldatetime)as Fecha

Da como resultado:

Fecha
------------------------------------------------------
2000-08-29 00:00:00

(1 row(s) affected)

Que conste, es un simple COPY-PASTE

Las fechas NUNCA se comparan con IGUAL (=), debe ser con >= o <=

A menos claro, que hagas un convert:

WHERE CONVERT(CHAR(8), GETDATE(), 112) = '20070828'
Iislas:

Ok, a mi me da lo mismo si lo ejecuto en el SQL.Server version ingles, pero si lo ejecutas desde el SQL.Server version castellano veras que te da el error antes mencionado.

Igualmente gracias por la ayuda porque descubri que si uso 'AAAAMMDD' en vez de 'AAAA-MM-DD' funciona en ambos idiomas.
Es decir, lo que antes daba error en el SQL(castellano) ahora funciona ok(la hora es opcional) asi:
Código:
select cast('20070828 23:59:59'as smalldatetime)as Fecha
Podria entonces concluir, que talvez el ANSI se refiere a 'AAAAMMDD' y no a 'AAAA-MM-DD'. Esto se basa en el query mencionado arriba, es decir si usan 'AAAA-MM-DD' funcionara ok para el SQL ver.Ingles, pero veran que les dara error en el SQL ver.Castellano, y viceversa si usan 'AAAA-DD-MM' funciona ok para SQL ver.Castellano y da error en SQL ver.Ingles. Pero si usamos el mismo query con 'AAAAMMDD' veran que funciona para ambos idiomas.

Desde ya muchas gracias a todos.
Saludos.
__________________
Mientras tanto aqui, en la Gran Ciudad...
Una nueva hora,...Comienza
:Zzz:
  #9 (permalink)  
Antiguo 29/08/2007, 06:33
Avatar de Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 19 años, 4 meses
Puntos: 38
Re: Formato Fecha segun idioma del SQL.Server

El formato AAAA-MM-DD es un estandard OBDC.

Syntax Error -ODBCCanonical Date Format

Como recomendacion: Siempre hay que manejar las fechas con el tipo de dato Date ó Datetime segun sea el caso, para evitar problemas.



Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.
  #10 (permalink)  
Antiguo 29/08/2007, 10:45
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Re: Formato Fecha segun idioma del SQL.Server

Yo sigo creyendo que Dios, si existe.
  #11 (permalink)  
Antiguo 05/09/2007, 19:10
Avatar de Mithrandir
Colaborador
 
Fecha de Ingreso: abril-2003
Mensajes: 12.106
Antigüedad: 21 años
Puntos: 25
Re: Formato Fecha segun idioma del SQL.Server

Puedes complicartela con las funciones de SQL Server. Por ejemplo Convert.

SELECT Convert(NChar(8), GetDate, 120)

El truco lo hace el 120 y los diferentes valores que ahí puedes poner. Revisa los BOL para más ayuda al respecto.


Aunque en realidad el formateo de fechas es algo que deberías hacer en el frontend (tu aplicación) y del SQL Server obtener y proporcionar las fechas en un formato universal.
__________________
"El hombre, en su orgullo, creó a Dios a su imagen y semejanza."
Friedrich Nietzsche
  #12 (permalink)  
Antiguo 06/11/2007, 11:57
 
Fecha de Ingreso: noviembre-2007
Mensajes: 1
Antigüedad: 16 años, 5 meses
Puntos: 0
Re: Formato Fecha segun idioma del SQL.Server

Horizonte:

Yo tuve el mismo problema y con tu solución lo resolví.
  #13 (permalink)  
Antiguo 26/03/2009, 11:59
 
Fecha de Ingreso: septiembre-2007
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Formato Fecha segun idioma del SQL.Server

Al parecer yo tengo el mismo problema y con lo que estuve preguntando me dijeron que la solucion seria en cambiar el idioma del sql... que eso se hace con un comando... el cual estoy investigando!
  #14 (permalink)  
Antiguo 02/07/2009, 12:01
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Formato Fecha segun idioma del SQL.Server

Hola.. yo tengo el mismo problema...

Hice un módulo en php y me devuelve la hora así: 05 Jul 2009.

Luego lo traspasé a el server en donde debería estar y me da el formato: Jul 05 2009.

Parece raro, no?... consulta siempre a la misma base de datos, es más... cuando lo muevo para el servidor, no cambio absolutamente nada. Pero cuando consutlo desde mi pc, me da la fecha en español y cuando la consulto desde el server, me la da en inglés...

¿Porque puede ser esto?
  #15 (permalink)  
Antiguo 02/07/2009, 12:12
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Formato Fecha segun idioma del SQL.Server

Y lo más impresionante de todo es que investigué la versión del sql Server 2005 instalado en el servidor del que obtengo los datos y está en español...


que puede ser??? estoy desesperado... necesito imprimir facturas...
  #16 (permalink)  
Antiguo 02/07/2009, 15:26
Avatar de alfcm  
Fecha de Ingreso: mayo-2009
Mensajes: 291
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Formato Fecha segun idioma del SQL.Server

Revisaste la configuracion regional del sistema operativo donde corre la base de datos
  #17 (permalink)  
Antiguo 03/07/2009, 07:46
 
Fecha de Ingreso: junio-2009
Mensajes: 33
Antigüedad: 14 años, 10 meses
Puntos: 0
Respuesta: Formato Fecha segun idioma del SQL.Server

Prolema solucionado amigos:


Tenía que cambiar el php.ini, era un problema muy simple.

Cambie la linea:

mssql.datetimeconvert = on

por

mssql.datetimeconvert = off

...GRacias por la ayuda..
  #18 (permalink)  
Antiguo 19/03/2010, 07:14
 
Fecha de Ingreso: marzo-2010
Mensajes: 1
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Formato Fecha segun idioma del SQL.Server

Una solucion practica para esto:
Si bien no se puede cambiar el Idioma del Sql Server del Producto instalado para solucionar el problema puedes Cambiar al usuario con el que accedes al SQL Server el idioma:

Security>Logins

Boton derecho sobre el Usuario.
y cambias el idioma del

Default Lenguage.

Con esto solucionas problemas de Formato de Fecha.
  #19 (permalink)  
Antiguo 19/03/2010, 11:35
 
Fecha de Ingreso: enero-2010
Ubicación: SJM Lima - Peru
Mensajes: 55
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Formato Fecha segun idioma del SQL.Server

Cita:
Iniciado por jpylp Ver Mensaje
Una solucion practica para esto:
Si bien no se puede cambiar el Idioma del Sql Server del Producto instalado para solucionar el problema puedes Cambiar al usuario con el que accedes al SQL Server el idioma:

Security>Logins

Boton derecho sobre el Usuario.
y cambias el idioma del

Default Lenguage.

Con esto solucionas problemas de Formato de Fecha.
hola
tambien podrias utilizar los comandos en un procedimiento almacenado
que reciba sus parametros como fechas en cadenas.
Código SQL:
Ver original
  1. CREATE PROCEDURE sp_insertarX
  2.     @xValor1 VARCHAR(20),
  3.     @xValor2 VARCHAR(20),
  4.     @xfecha VARCHAR(10)
  5.     AS
  6.        BEGIN
  7.     SET DATEFORMAT mdy
  8.     SET DATEFORMAT ydm
  9.     SET DATEFORMAT ymd
  10.     INSERT INTO mytabla VALUES(@xValor1, @xValor2, @xfecha)
  11.        END
ya seria conveniente saber como estan dando tus controles los valores de fecha(VB6 u otro lenguaje) para asi poder utilizar del mejor modo su guardado con el comando SET DATEFORMAT

www.bitxense.com.pe | Soluciones Informaticas S.A.C. - [email protected]
Cualquier duda soy Jhon Bautista Palomino aqui esta mi correo MSN [email protected] Lima-Peru
.
  #20 (permalink)  
Antiguo 16/07/2010, 11:31
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 217
Antigüedad: 15 años
Puntos: 1
Respuesta: Formato Fecha segun idioma del SQL.Server

tengo un problema, mando una fecha dd/mm/aaaa y en el SP tengo un convert asi:

CONVERT (datetime, (CONVERT (NVARCHAR(10),@FECHA )),103)

funciona con absolutamente todos mis otros SP pero en este no, me manda error y no se porque, ojala aya aun alguien hay que me pueda ayudar
__________________
cuidensen y que arceus los acompanhe
  #21 (permalink)  
Antiguo 16/07/2010, 11:46
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Formato Fecha segun idioma del SQL.Server

Ya hemos hablado varias veces que es mejor usar las fechas en el formato ANSI: yyyymmdd, asi no tienes que convertir nada.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #22 (permalink)  
Antiguo 20/07/2010, 12:53
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: Formato Fecha segun idioma del SQL.Server

hasta el cansancio.......
  #23 (permalink)  
Antiguo 21/07/2010, 07:12
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 217
Antigüedad: 15 años
Puntos: 1
Respuesta: Formato Fecha segun idioma del SQL.Server

raro, con el formato ansi me generaba error pero ya lo solucione cambiando el tipo de @FECHA, gracias de todos modos
__________________
cuidensen y que arceus los acompanhe
  #24 (permalink)  
Antiguo 21/07/2010, 07:34
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Formato Fecha segun idioma del SQL.Server

El formato es YYYYMMDD. Asi lo usabas?
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #25 (permalink)  
Antiguo 21/07/2010, 07:39
 
Fecha de Ingreso: abril-2009
Ubicación: Bogota
Mensajes: 217
Antigüedad: 15 años
Puntos: 1
Respuesta: Formato Fecha segun idioma del SQL.Server

Cita:
Iniciado por flaviovich Ver Mensaje
El formato es YYYYMMDD. Asi lo usabas?
sip
__________________
cuidensen y que arceus los acompanhe
  #26 (permalink)  
Antiguo 21/07/2010, 07:48
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Formato Fecha segun idioma del SQL.Server

Bueno, lo pasado, pasado esta. Lo importe es solucionar el problema.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #27 (permalink)  
Antiguo 29/10/2010, 16:20
Avatar de Inicia  
Fecha de Ingreso: octubre-2010
Ubicación: Actualmente en GDL
Mensajes: 135
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Formato Fecha segun idioma del SQL.Server

Código SQL:
Ver original
  1. SET dateformat dmy
El último parametro dmy es el formato que le darás a la fecha, día mes y año o alrevés ymd, etc... ejecutalo y luego ejecuta tu consulta =) suerte
  #28 (permalink)  
Antiguo 31/10/2010, 03:31
 
Fecha de Ingreso: octubre-2010
Ubicación: Baja Baviera, Alemania
Mensajes: 13
Antigüedad: 13 años, 5 meses
Puntos: 1
Respuesta: Formato Fecha segun idioma del SQL.Server

tal como esta en el titulo como yo lo haria es mirando mediante consulte el locale que tenga la maquina y segun el locale se puede hacer con un case un convert(... getdate()...) con los parametros adecuados en cada parte del case.

Por ejemplo, en caso de USA, Europa o incluso musulman y hebreo como viene en la documentacion de convert
  #29 (permalink)  
Antiguo 18/08/2011, 09:16
 
Fecha de Ingreso: mayo-2011
Mensajes: 3
Antigüedad: 12 años, 11 meses
Puntos: 0
Información Respuesta: Formato Fecha segun idioma del SQL.Server

Cita:
Iniciado por jpylp Ver Mensaje
Una solucion practica para esto:
Si bien no se puede cambiar el Idioma del Sql Server del Producto instalado para solucionar el problema puedes Cambiar al usuario con el que accedes al SQL Server el idioma:

Security>Logins

Boton derecho sobre el Usuario.
y cambias el idioma del

Default Lenguage.

Con esto solucionas problemas de Formato de Fecha.
Gracias, esta ha sido una solucion que he aplicado y realmente me quedo como anillo al dedo, ya lo he aplicado y no me ha dado ningun problema. Me ahorraste trabajo, gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas




La zona horaria es GMT -6. Ahora son las 08:48.