SQL Server - Pasas FECHA DateTime a Char

 
Vista:
sin imagen de perfil
Val: 3
Ha aumentado su posición en 44 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Pasas FECHA DateTime a Char

Publicado por Gabriel (2 intervenciones) el 28/04/2021 19:38:32
Muy buenas tengo un Procedimiento que al ingresar datos de la fecha esta debe estar en "dd/mm/yyyy", pero en el procedimiento por las características para la consulta deben estar en "yyyymmdd"

El error que muestra al ejecutar dicho SP es:
1
2
Msg 214, Level 16, State 2, Procedure sp_executesql, Line 1
Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'.

Esto es lo que se hace, para ver los datos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
IF EXISTS (SELECT * FROM dbo.sysobjects WHERE ID = OBJECT_ID('[dbo].Cat_CtaCte_Efectivo') and OBJECTPROPERTY(id, 'IsProcedure') = 1)
   DROP PROCEDURE [dbo].[Cat_CtaCte_Efectivo];
GO
 
CREATE PROCEDURE [dbo].[sp_nuevo]
@strEmpId as Varchar(50),
@fechaini as Datetime,				--VarChar(10),
@fechafin as DateTime				--VarChar(10)
 
AS
BEGIN
--#20
 
/*DECLARACION DE VARIABLES*/
  DECLARE @ENTER CHAR(1)
  DECLARE @Cat CHAR(1)
  DECLARE @Ven VARCHAR(3)
  DECLARE @Esta VARCHAR(1)
  DECLARE @True VARCHAR(4)
  DECLARE @CtaCte VARCHAR(10)
  DECLARE @Fpago VARCHAR(8)
  DECLARE @strSQL VARCHAR(8000)
 
  DECLARE @FInici VARCHAR(8)
  DECLARE @FFinal VARCHAR(8)		--='20161231'
 
/*INICIALIZAR VARIABLES*/
  SELECT @Cat = ''''
  SELECT @Ven = 'VEN'
  SELECT @Esta = 'A'
  SELECT @True = 'True'
  SELECT @CtaCte = 'ConCtaCte'
  SELECT @Fpago = 'Efectivo'
  SELECT @strSQL=''
  SELECT @ENTER=CHAR(13)
  SELECT @FInici =cast(year(@fechaini)as varchar(4)) + cast(month(@fechaini)as varchar(2)) + cast(day(@fechaini)as varchar(2))
  --SELECT @FInici = CONVERT (DateTime, @fechaini, 112)
  SELECT @FFinal = CONVERT (DateTime, @fechafin, 112)
 
/*INICIO DE LA CONSULTA*/
SELECT @strSQL = @strSQL + 'USE ' +  @strEmpId + '' + @ENTER
--#49
 
  SELECT @FInici
 
SELECT @strSQL = @strSQL + 'SELECT datos1, ' + @ENTER
SELECT @strSQL = @strSQL + 'datos2, ' + @ENTER
SELECT @strSQL = @strSQL + 'datos3 ' + @ENTER
SELECT @strSQL = @strSQL + 'FROM tabla1 ' + @ENTER
SELECT @strSQL = @strSQL + 'RIGHT JOIN tabla2 RIGHT JOIN xxxxxxxxx' + @ENTER
SELECT @strSQL = @strSQL + 'INNER JOIN tabla3 ON xxxxxxxxxxxxxxxxxxxxxxx ' + @ENTER
SELECT @strSQL = @strSQL + 'LEFT JOIN tabla4 ON xxxxxxxxxxxxxxxx ' + @ENTER
SELECT @strSQL = @strSQL + 'LEFT JOIN tabla5 ON xxxxxxxxxxxxxxxxxxxxxxx ' + @ENTER
SELECT @strSQL = @strSQL + 'LEFT JOIN tabla5 ON xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ' + @ENTER
SELECT @strSQL = @strSQL + 'WHERE datoss1 = ' + @Cat + @Ven + @Cat + '' + @ENTER
SELECT @strSQL = @strSQL + 'AND datoss2 = ' + @Cat + @Esta + @Cat + '' + @ENTER
SELECT @strSQL = @strSQL + 'AND datoss3 = ' + @Cat + @True + @Cat + '' + @ENTER
SELECT @strSQL = @strSQL + 'AND (datoss4 = ' + @Cat + @CtaCte + @Cat + ' Or vntFPagoTxn.fpaId = ' + @cat + @Fpago + @Cat + ') ' + @ENTER
SELECT @strSQL = @strSQL + 'AND datoss5 Is Not Null ' + @ENTER
SELECT @strSQL = @strSQL + 'AND fecha Between ' + @Cat + @FInici + @Cat + ' And ' + @cat + @FFinal + @Cat + '' + @ENTER
--SELECT @strSQL = @strSQL + 'AND fecha Between ' + @FInici + ' And ' + @FFinal + @ENTER
 
/*EJECUCION DE LA CONSULTA*/
EXEC (@strSQL) IF @@ERROR <> 0 BEGIN RETURN END
 
END

gracias por la claración
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

Pasas FECHA DateTime a Char

Publicado por Isaias (4558 intervenciones) el 30/04/2021 01:55:56
Todos los datos de tipo fecha se deben manejar con "yyyymmdd"
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
sin imagen de perfil
Val: 3
Ha aumentado su posición en 44 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Pasas FECHA DateTime a Char

Publicado por Gabriel Angel (2 intervenciones) el 30/04/2021 18:11:26
Gracias por la aclaración, pero cual sería el problema, ya que ingreso la fecha, pero, aún me sigue saliendo el error:

1
2
3
4
5
--Exec sp_nuevo 'empresa','01/01/2020','31/01/2020'
Exec sp_nuevo 'empresa','20200101','20200131'
 
Msg 241, Level 16, State 1, Procedure sp_nuevo, Line 57
Conversion failed when converting date and/or time from character string.

1
2
3
4
5
6
7
8
9
CREATE PROCEDURE [dbo].[Cat_CtaCte_Efectivo]
@strEmpId as Varchar(50),
@fechaini as Datetime,				--VarChar(10),
@fechafin as DateTime				--VarChar(10)
 
AS
 
SELECT @strSQL = @strSQL + 'AND fecha Between ' + @Cat + @fechaini + @Cat + ' And ' + @cat + @fechafin + @Cat + '' + @ENTER
--SELECT @strSQL = @strSQL + 'AND fecha Between ' + @FInici + ' And ' + @FFinal + @ENTER

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