Devolver un datetime en un procedimiento almacenado cadena a datetime

15/02/2007 - 13:29 por Javi 3D .Net | Informe spam
hola ,
Quiero hacer un procedimeinto almacenado q convierte cadena a datetime
ya esta hecha la logica bueno lo pongo por si a alguen le va bien ,
ahora quiero que me devuelva el valor.
cadena tiene el formatto ddmmaaaa y hora hhmmss

CREATE PROCEDURE CONVIERTESTRINGENDATETIME
@fechastr VARCHAR(10),
@HORA VARCHAR(10)

AS
DECLARE @HORAS AS VARCHAR(2)
DECLARE @MIN AS VARCHAR(2)
DECLARE @SEG AS VARCHAR(2)
DECLARE @FECHA DATETIME



select @fechastr = right(@fechastr, 4) + substring(@fechastr, 3,
2) + left(@fechastr, 2)
select @fecha = convert(varchar(10), cast(@fechastr as datetime),
103)

select @horas = substring(@hora,1,2)
select @min = substring(@hora,3,2)
select @seg = substring(@hora,5,2)

select @fecha = dateadd(hh,cast(@horas as int),@fecha)
select @Fecha = dateadd(mi,cast(@min as int),@fecha)
select @fecha = dateadd(ss,cast(@seg as int),@fecha)

RETURN select @fecha = dateadd(ss,cast(@seg as int),@fecha)
GO

Preguntas similare

Leer las respuestas

#1 Javi 3D .Net
15/02/2007 - 15:16 | Informe spam
Javi 3D .Net ha escrito:
hola ,
Quiero hacer un procedimeinto almacenado q convierte cadena a datetime
ya esta hecha la logica bueno lo pongo por si a alguen le va bien ,
ahora quiero que me devuelva el valor.
cadena tiene el formatto ddmmaaaa y hora hhmmss

CREATE PROCEDURE CONVIERTESTRINGENDATETIME
@fechastr VARCHAR(10),
@HORA VARCHAR(10)

AS
DECLARE @HORAS AS VARCHAR(2)
DECLARE @MIN AS VARCHAR(2)
DECLARE @SEG AS VARCHAR(2)
DECLARE @FECHA DATETIME



select @fechastr = right(@fechastr, 4) + substring(@fechastr, 3,
2) + left(@fechastr, 2)
select @fecha = convert(varchar(10), cast(@fechastr as datetime),
103)

select @horas = substring(@hora,1,2)
select @min = substring(@hora,3,2)
select @seg = substring(@hora,5,2)

select @fecha = dateadd(hh,cast(@horas as int),@fecha)
select @Fecha = dateadd(mi,cast(@min as int),@fecha)
select @fecha = dateadd(ss,cast(@seg as int),@fecha)

RETURN select @fecha = dateadd(ss,cast(@seg as int),@fecha)
GO



OK SELECT @FECHA
Respuesta Responder a este mensaje
#2 Alejandro Mesa
15/02/2007 - 16:17 | Informe spam
Hola Javi,

Si puedes formatear la concatenacion de ambas cadenas de la forma
'yyyy-mm-ddThh:mm:ss', SQL Server la reconecera como datetime sin ningun
problema.

Ejemplo:

declare @fecha varchar(10)
declare @hora varchar(10)

set @fecha = '15022007'
set @hora = '132745'

select
cast(parsename(f, 1) + '-' + parsename(f, 2) + '-' + parsename(f, 3) + 'T'
+ h as datetime)
from
(
select
stuff(stuff(@fecha, 3, 0, '.'), 6, 0, '.'),
stuff(stuff(@hora, 3, 0, ':'), 6, 0, ':')
) as t(f, h)
go


AMB


"Javi 3D .Net" wrote:

hola ,
Quiero hacer un procedimeinto almacenado q convierte cadena a datetime
ya esta hecha la logica bueno lo pongo por si a alguen le va bien ,
ahora quiero que me devuelva el valor.
cadena tiene el formatto ddmmaaaa y hora hhmmss

CREATE PROCEDURE CONVIERTESTRINGENDATETIME
@fechastr VARCHAR(10),
@HORA VARCHAR(10)

AS
DECLARE @HORAS AS VARCHAR(2)
DECLARE @MIN AS VARCHAR(2)
DECLARE @SEG AS VARCHAR(2)
DECLARE @FECHA DATETIME



select @fechastr = right(@fechastr, 4) + substring(@fechastr, 3,
2) + left(@fechastr, 2)
select @fecha = convert(varchar(10), cast(@fechastr as datetime),
103)

select @horas = substring(@hora,1,2)
select @min = substring(@hora,3,2)
select @seg = substring(@hora,5,2)

select @fecha = dateadd(hh,cast(@horas as int),@fecha)
select @Fecha = dateadd(mi,cast(@min as int),@fecha)
select @fecha = dateadd(ss,cast(@seg as int),@fecha)

RETURN select @fecha = dateadd(ss,cast(@seg as int),@fecha)
GO


Respuesta Responder a este mensaje
#3 Alejandro Mesa
15/02/2007 - 16:30 | Informe spam
Se me paso darte las gracias por compartir el codigo con el grupo.

AMB

"Javi 3D .Net" wrote:

hola ,
Quiero hacer un procedimeinto almacenado q convierte cadena a datetime
ya esta hecha la logica bueno lo pongo por si a alguen le va bien ,
ahora quiero que me devuelva el valor.
cadena tiene el formatto ddmmaaaa y hora hhmmss

CREATE PROCEDURE CONVIERTESTRINGENDATETIME
@fechastr VARCHAR(10),
@HORA VARCHAR(10)

AS
DECLARE @HORAS AS VARCHAR(2)
DECLARE @MIN AS VARCHAR(2)
DECLARE @SEG AS VARCHAR(2)
DECLARE @FECHA DATETIME



select @fechastr = right(@fechastr, 4) + substring(@fechastr, 3,
2) + left(@fechastr, 2)
select @fecha = convert(varchar(10), cast(@fechastr as datetime),
103)

select @horas = substring(@hora,1,2)
select @min = substring(@hora,3,2)
select @seg = substring(@hora,5,2)

select @fecha = dateadd(hh,cast(@horas as int),@fecha)
select @Fecha = dateadd(mi,cast(@min as int),@fecha)
select @fecha = dateadd(ss,cast(@seg as int),@fecha)

RETURN select @fecha = dateadd(ss,cast(@seg as int),@fecha)
GO


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida