SQL Server - Me pueden ayudar con este codigo sobre comparacion de fechas

 
Vista:

Me pueden ayudar con este codigo sobre comparacion de fechas

Publicado por Martin (4 intervenciones) el 14/07/2020 06:54:59
Hola Gente, me dan una mano con esta parte, estoy empezando y mi intención es de la variable @AAAA tengo el dato año y lo quiero comparar con el campo falta decimal (8,0) que tiene fecha plana aaaammdd y quiero que el sql le asigne a la variable @fechaalta el valor 12 en el caso que @AAAA sea mayo o igual. en el caso que @AAAA es menor que a la constante 13 le reste los dos numero de la posición 5 (mes).
Esta sentencia tiene desde errores de sintaxis, hasta de lógica.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@AAAA decimal (4,0),
@Fechaalta decimal (8,0)
 
 
SELECT CAST(
                CASE
					 WHEN @AAAA > LEFT(falta,4)
						then set @Fechaalta = 12
 
                 ELSE set (@Fechaalta = 13 - (SUBSTRING (falta. 5,2))
 
                END )
 
from [base].[dbo].[tabla]
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Me pueden ayudar con este codigo sobre comparacion de fechas

Publicado por Isaias (4558 intervenciones) el 14/07/2020 08:18:20
¿Cual es el error?, ¿Que motor de base de datos ocupas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Me pueden ayudar con este codigo sobre comparacion de fechas

Publicado por Martin (4 intervenciones) el 14/07/2020 18:44:39
Hola, gracias por tu tiempo.

El motor es Microsoft SQL Server Management Studio 2014 V(12.0.4100.1)

Por lo pronto emite errores de sintaxis

Msg 156, Level 15, State 1, Procedure SP6, Line 704
Incorrect syntax near the keyword 'set'.
Msg 156, Level 15, State 1, Procedure SP6, Line 706
Incorrect syntax near the keyword 'ELSE'.
Msg 156, Level 15, State 1, Procedure SP6, Line 706
Incorrect syntax near the keyword 'SET'.

Gracas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Me pueden ayudar con este codigo sobre comparacion de fechas

Publicado por Isaias (4558 intervenciones) el 15/07/2020 02:06:28
No se que tanta experiencia tengas con SQL Server, pero te hacen falta algunas cosas
1
2
3
4
5
6
7
8
9
10
11
12
13
DECLARE @AAAA decimal (4,0)  -- La palabra DECLARE, ¿porque decimal 4,0?, ¿que contiene esta variable?
DECLARE @Fechaalta decimal (8,0)  -- ¿Porque decimal de 8,0?, ¿que contiene esta variables?
 
SELECT CAST( -- ¿Para que un CAST?
                CASE
					 WHEN @AAAA > LEFT(falta,4) --¿Que tipo de dato es FALTA?
						then @Fechaalta = 12  -- Omite la palabra SET
 
                 ELSE  (@Fechaalta = 13 - (SUBSTRING (falta. 5,2)) -- Omite la palabra SET
 
                END )
 
from [base].[dbo].[tabla]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Me pueden ayudar con este codigo sobre comparacion de fechas

Publicado por Martin (4 intervenciones) el 15/07/2020 05:22:34
HOLA iSAIAS ESCRIBO EN MAYÚSCULA ASÍ SE DIFERENCIA CON EL TEXTO ANTERIOR

DECLARE @AAAA decimal (4,0) -- La palabra DECLARE, ¿porque decimal 4,0?, ¿que contiene esta variable? CONTIENE EL AÑO DEL QUE ME INTERESA FILTRAR
DECLARE @Fechaalta decimal (8,0) -- ¿Porque decimal de 8,0?, ¿que contiene esta variables? LA VARIABLE @FECHAALTA ES VOY A TENER EL RESULTADO, Y LO CORRECTO ES QUE SEA DE DOS DIGITOS PORQUE EL RESULTADO VA A SER SIEMPRE MENOR AL NUMERO 13.

LA FUNCION CAST LA PUSE PORQUE SI VOY A UTILIZAR LA FUNCIÓN LEFT Y ESTA DEVUELVE LA PARTE IZQUIERDA DE UNA CADENA DE CARACTERES CON EL NÚMERO DE CARACTERES ESPECIFICADO. TENGO QUE CONVERTIR A CADENAS DE CARACTERES EL TIPO DE DATO

1
2
3
4
5
6
7
8
9
10
SELECT CAST( -- ¿Para que un CAST?
                CASE
					 WHEN @AAAA > LEFT(falta,4) --¿Que tipo de dato es FALTA?          ES UN CAMPO DE FECHA PLANA EJ: 20200715
						then @Fechaalta = 12  -- Omite la palabra SET
 
                 ELSE  (@Fechaalta = 13 - (SUBSTRING (falta. 5,2)) -- Omite la palabra SET
 
                END )
 
from [base].[dbo].[tabla]

GRACIAS, YO VOY A IR PROBANDO LOS ERRORES QUE YA ME MARCÓ, A VER SI PUEDO DARLE FORMA.



GRACIAS.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Me pueden ayudar con este codigo sobre comparacion de fechas

Publicado por Isaias (4558 intervenciones) el 15/07/2020 17:14:27
LA FUNCION CAST LA PUSE PORQUE SI VOY A UTILIZAR LA FUNCIÓN LEFT Y ESTA DEVUELVE LA PARTE IZQUIERDA DE UNA CADENA DE CARACTERES CON EL NÚMERO DE CARACTERES ESPECIFICADO. TENGO QUE CONVERTIR A CADENAS DE CARACTERES EL TIPO DE DATO

En SQL Server hay dos tipos de conversiones, IMPLÍCITAS y EXPLICITAS

1
2
3
4
5
-- Conversion Implicita
DECLARE @AÑO CHAR(4) = '2020'
SELECT LEFT(@AÑO,2)
IF LEFT(@AÑO,2) >= 19
 PRINT 'TRUE'

Si voy a colocar AÑO en una variable, no necesita ser DECIMAL, simplemente con que la declare INT, basta

1
2
DECLARE @AÑO INT = '1980'
SELECT LEFT(@AÑO,2)

Una ultima observación, utilice los TIPOS DE DATOS necesarios, conforme vaya utilizando los valores
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Me pueden ayudar con este codigo sobre comparacion de fechas

Publicado por Martin (4 intervenciones) el 15/07/2020 18:57:11
gracias a tu explicacion fui probando y me devolvió el resultado esperado, muchas Gracias Isaias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Me pueden ayudar con este codigo sobre comparacion de fechas

Publicado por Isaias (4558 intervenciones) el 15/07/2020 19:19:55
De nada, para eso son los foros, para apoyar, saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar