Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/07/2007, 08:11
BarOdy
 
Fecha de Ingreso: julio-2007
Ubicación: Trujillo - Perú
Mensajes: 3
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: fechas en sql - ingles vs español

Hola:

Bueno con respecto a tu pregunta el problema se debe al idioma con el que has instalado tu motor de base de datos, pero para corregir esto si no quieres desinstalar tu SQL Server en inglés, puedes utilizar algunas de las siguientes opciones:

- Primero utilizar el estándar ISO para las fechas yyyymmdd [hh:mm](la hora es opcional), de esta forma al asignarle un valor con este formato a un campo datetime o smalldatetime no deberías de tener problemas.

Por ejemplo:

-- Creamos un procedimiento almacenado de prueba...
CREATE PROC usp_MostrarFecha
@Fecha smalldatetime
AS
SELECT @Fecha
GO

-- Ejecutamos las siguientes sentencias:
EXEC usp_MostrarFecha '28/07/2007'
GO
EXEC usp_MostrarFecha '07/28/2007'
GO
EXEC usp_MostrarFecha '20070728'
GO

-- Los resultados :
Mens 8114, Nivel 16, Estado 1, Procedimiento usp_MostrarFecha, Línea 0
Error converting data type varchar to smalldatetime.

-----------------------
2007-07-28 00:00:00 -> Formato para el idioma ingles mmddyyyy

-----------------------
2007-07-28 00:00:00 -> Con el formato iso para fechas funciona.


- Otra alternativa es que borres y vuelvas a crear tu procedimiento pero antes establescas algunas de estas opciones:

SET LANGUAGE SPANISH o SET DATEFORMAT DMY

Por ejemplo:
DROP PROC usp_MostrarFecha
GO
SET LANGUAGE SPANISH
GO
-- SET DATEFORMAT DMY
-- GO

CREATE PROC usp_MostrarFecha
@Fecha smalldatetime
AS
SELECT @Fecha
GO


Son algunas de las soluciones que hice, pues se me presento el mismo caso en el trabajo. Te recomiendo la primera solución, pero si tienes una aplicación ya desarrollada y tienes un servidor en Inglés, me parece que no queda otro remedio que volver a crear los procedimientos con algunas de las configuraciones SET LANGUAGE o SET DATEFORMAT ya establecidas.

Recibe un cordial saludo, espero que pueda ayudarte.

Saludos,