none
Trabajo con fechas en store procedure RRS feed

  • Pregunta

  • ALTER PROCEDURE [dbo].[SP_INSERTAR_MATRICULA] @Num_Matricula int, @Fecha date, @Num_Estudiante nvarchar(10), @Termino nvarchar(10), @Semestre int, @Candidato_Graduacion bit, @Fecha_Comienzo date, @Departamento int, @Curso int, @Fecha_Primer_Dia_Clases date, @Ultima_Asistencia date AS BEGIN INSERT INTO Matriculas_Tabla VALUES ( @Num_Matricula, @Fecha, @Num_Estudiante, @Termino, @Semestre, @Candidato_Graduacion, @Fecha_Comienzo, @Departamento, @Curso,

    If @Fecha < @Fecha_Comienzo them

    @Fecha_pecha_Primer_Dia_de_Clases = @Fecha_Comienzo

    If @Fecha > @Fecha_Comienzo and @Fecha_Comienzo = dia lunes them

    @Fecha_pecha_Primer_Dia_de_Clases = @Fecha_Comienzo + 1 osea dia martes

    @Ultima_Asistencia

    ) end

    Lo que quiero es usar los if o case de forma correcta en sql

    • Editado Efrain Diaz sábado, 12 de noviembre de 2016 16:01
    sábado, 12 de noviembre de 2016 16:00

Respuestas

  • Saludos

    Tu Procedimiento almacenado seria de la siguiente forma, debes realizar las validaciones ante de realizar el INSERT.

    ALTER PROCEDURE [dbo].[SP_INSERTAR_MATRICULA]
    @Num_Matricula int,
    @Fecha date,
    @Num_Estudiante nvarchar(10),
    @Termino nvarchar(10),
    @Semestre int,
    @Candidato_Graduacion bit,
    @Fecha_Comienzo date,
    @Departamento int,
    @Curso int,
    @Fecha_Primer_Dia_Clases date,
    @Ultima_Asistencia date
    AS

    IF @Fecha < @Fecha_Comienzo
    BEGIN
    SET @Fecha_pecha_Primer_Dia_de_Clases = @Fecha_Comienzo
    END

    IF @Fecha > @Fecha_Comienzo AND DATEPART(dw, @Fecha_Comienzo) = 2
    BEGIN
    SET @Fecha_pecha_Primer_Dia_de_Clases = DATEADD(DAY, 1, @Fecha_Comienzo)
    END


    BEGIN
    INSERT INTO Matriculas_Tabla 
    VALUES
    (
    @Num_Matricula,
    @Fecha,
    @Num_Estudiante,
    @Termino,
    @Semestre,
    @Candidato_Graduacion,
    @Fecha_Comienzo,
    @Departamento,
    @Curso,
    @Fecha_pecha_Primer_Dia_de_Clases,
    @Ultima_Asistencia
    )
    end

    lunes, 14 de noviembre de 2016 16:00

Todas las respuestas

  • ALTER PROCEDURE [dbo].[SP_INSERTAR_MATRICULA] @Num_Matricula int, @Fecha date, @Num_Estudiante nvarchar(10), @Termino nvarchar(10), @Semestre int, @Candidato_Graduacion bit, @Fecha_Comienzo date, @Departamento int, @Curso int, @Fecha_Primer_Dia_Clases date, @Ultima_Asistencia date AS BEGIN INSERT INTO Matriculas_Tabla VALUES ( @Num_Matricula, @Fecha, @Num_Estudiante, @Termino, @Semestre, @Candidato_Graduacion, @Fecha_Comienzo, @Departamento, @Curso, @Fecha_Primer_Dia_Clases, @Ultima_Asistencia ) end

    en este procedimiento almacenado necesito utilizer un if o un case dependiendo de

    lo que mas me convenga, necesito que

    si @Fecha <= @Fecha_Comienzo entonces

    @Fecha_Primer_Dia_Clases = @Fecha_Comienzo

    si @Fecha > @Fecha_Comiento y @Fecha_Comienzo=dia lunes entonces

    @Fecha_Primer_Dia_Clases = @Fecha_Comienzo + 1 osea el proximo dia que seria martes

    y asi sucesivamente hasta que si @Fecha_Comienzo fuera viernes entonces entonces seria

    + 2 osea lunes por que no puede empezar ni sabado ni domingo la clase, es importante

    que todo se encuentre dentro del procedimiento almacenado

    viernes, 11 de noviembre de 2016 19:45
  • Guiate por este modelo

    SET DATEFIRST 1
    DECLARE @Fecha Date, @Fecha_Comienzo Date, @Fecha_pecha_Primer_Dia_de_Clases date
    If @Fecha < @Fecha_Comienzo 
    BEGIN
    SET @Fecha_pecha_Primer_Dia_de_Clases = @Fecha_Comienzo
    END
    If  @Fecha > @Fecha_Comienzo and DATEPART(dw,@Fecha_Comienzo) = 1
    BEGIN
    SET @Fecha_pecha_Primer_Dia_de_Clases = DATEADD(d,1,@Fecha_Comienzo)
    END

    sábado, 12 de noviembre de 2016 16:22
  • Anibal no entiendo exactamente como lo puedo aplicar, podrias darme algo mas concreto

    sábado, 12 de noviembre de 2016 18:16
  • En ese caso mas bien hace falta que la pregunta se mas explicita.

    Saludos

    sábado, 12 de noviembre de 2016 18:20
  • No se como aplicar a mi procedimiento almacenado el codigo que me mostrastes trate de hacerlo pero me da error en la si taxis
    sábado, 12 de noviembre de 2016 18:48
  • Saludos

    Tu Procedimiento almacenado seria de la siguiente forma, debes realizar las validaciones ante de realizar el INSERT.

    ALTER PROCEDURE [dbo].[SP_INSERTAR_MATRICULA]
    @Num_Matricula int,
    @Fecha date,
    @Num_Estudiante nvarchar(10),
    @Termino nvarchar(10),
    @Semestre int,
    @Candidato_Graduacion bit,
    @Fecha_Comienzo date,
    @Departamento int,
    @Curso int,
    @Fecha_Primer_Dia_Clases date,
    @Ultima_Asistencia date
    AS

    IF @Fecha < @Fecha_Comienzo
    BEGIN
    SET @Fecha_pecha_Primer_Dia_de_Clases = @Fecha_Comienzo
    END

    IF @Fecha > @Fecha_Comienzo AND DATEPART(dw, @Fecha_Comienzo) = 2
    BEGIN
    SET @Fecha_pecha_Primer_Dia_de_Clases = DATEADD(DAY, 1, @Fecha_Comienzo)
    END


    BEGIN
    INSERT INTO Matriculas_Tabla 
    VALUES
    (
    @Num_Matricula,
    @Fecha,
    @Num_Estudiante,
    @Termino,
    @Semestre,
    @Candidato_Graduacion,
    @Fecha_Comienzo,
    @Departamento,
    @Curso,
    @Fecha_pecha_Primer_Dia_de_Clases,
    @Ultima_Asistencia
    )
    end

    lunes, 14 de noviembre de 2016 16:00