| |||
Validar si un dato tipo varchar se puede convertir a datetime hola Carnales, estoy en un aprieto, estoy desarrollando una aplicacion que me importara Archivos de texto plano a diferentes tablas en mi base de datos, para subir dicho archivo he creado un paquete DTS el cual ejecuto desde mi aplicacion, este archivo contiene dos campos cuyo destino es tipo datetime asi que lo que hago es cargarlos como varchar todos a una tabla en SQL y posteriormente hago ciertas validaciones a toda la informacion, tales como unidades de medida en catalogo, numeros de parte en catalogo, etc., y una validacion que no encuentro como hacerla es de los tipos de datos varchar que provocan error de rango de fechas al convertirlos a datetime, despues de que hago estas validaciones, utilizo un procedimiento almacenado para cargar toda esta informacion en las diferentes tablas de mi base de datos, pero si por X o por Y el archivo que me enviaron trae una fecha mal, tal como 00/00/0000, o peor aun 30/02/xxxx, pues nadamas truena, se acepatan sugerencias, toda la ayuda sera muy agradecida, sin mas, me despido. |
| |||
Re: Validar si un dato tipo varchar se puede convertir a datetime Yo me crearia una función en Sql Server que me diga si el campo es tipo fecha. Esta funcion devuelve un tipo Fecha en función de un String. Manipulandola un poco podras conseguir lo que necesitas. Una vez tengas la funcion hecha la usas en tus SQL's Select ..... case when EsFecha(Campo) Then Campo else '' End ..... CREATE FUNCTION dbo.CDATE ( @FECHA nVarChar(10)) RETURNS SMALLDATETIME AS BEGIN DECLARE @TMPDate SMALLDATETIME, @UNCHAR NVARCHAR(1) SET @UNCHAR=SUBSTRING(@FECHA,5,1) IF (@UNCHAR='-' OR @UNCHAR='/') SET @FECHA=DBO.DATEE(@FECHA,' ') IF(@FECHA<>'' AND @FECHA <> '____-_-__' AND LEN(LTRIM(@FECHA))=10) BEGIN SET @TMPDate = Cast(@FECHA AS SMALLDATETIME) --set @tmpdate = @fecha --'2004-12-12' End Else SET @TMPDate = Cast('01-01-1900' AS SMALLDATETIME) RETURN @TMPDate END |
| |||
Re: Validar si un dato tipo varchar se puede convertir a datetime hola oye una pregunta como envias a tu base de datos las fechas, lo que pasa es que tengo un elemento .text el cual contiene la fecha actual de mi pagina la cual utilizare para dar de alta algunos productos y quiero enviar esa fecha a un campo date time pero me marca un error Column name or number of supplied values does not match table definition. Podrias ayudarme??? |
| |||
Re: Validar si un dato tipo varchar se puede convertir a datetime Que tal flizby. Tienes dos alternativas. 1.- En el momento en que insertas, puedes usar la función getdate(), para insertar la fecha de ese momento ( incluido la hora). 2.- La mejor manera que he encontrado de manejar fechas en SQL server, es con el formato AAAAMMDD, de esta forma no hay error, es independiente de la configuración que tengas en SQL server. Saludos y suerte!! |
| ||||
Respuesta: Validar si un dato tipo varchar se puede convertir a datetime podes convertirlo de la siguiente manera y vas a recibir un recordset con el formato de fecha DD/MM/YYYY select convert(smalldatetime,convert(varchar(10),ultimafe cha,103),103) from tabla where campodatetime between '1900-01-01' and '2079-06-06' Es importante restringir el rango de fechas que se encuentra en el where porque, son los rangos que maneja el tipo SMALLDATETIME, por ejemplo si en la base de datos hay una fecha cargada y esta supera al 2079 y no tuvieramos aplicado el rango de fechas que especifiqué en el where, entonces no va a funcionar y arrojaría el siguiente error: Server: Msg 296, Level 16, State 3, Line 1 The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value. Otra cosa es que en el ejemplo devuelve la fecha en formato DD/MM/YYYY porque utilicé 103, en el siguiente link se muestra la tabla completa. msdn.microsoft.com/es-es/library/ms182418.aspx Espero que les sirva Ruben |
| ||||
Respuesta: Re: Validar si un dato tipo varchar se puede convertir a datetime Cita: Parece un error de sintanxis...podrias escribir el comando que estas enviando a la bd o el stored procedure que realiza el insert??
Iniciado por flizby hola oye una pregunta como envias a tu base de datos las fechas, lo que pasa es que tengo un elemento .text el cual contiene la fecha actual de mi pagina la cual utilizare para dar de alta algunos productos y quiero enviar esa fecha a un campo date time pero me marca un error Column name or number of supplied values does not match table definition. Podrias ayudarme??? 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. |