SQL Server - DBCC DROPCLEANBUFFERS

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

DBCC DROPCLEANBUFFERS

Publicado por Saul (3 intervenciones) el 01/03/2017 01:45:08
Buen dia
tengo este codigo:

1
2
3
4
5
6
7
8
9
10
11
USE AdventureWorks2014
GO
DBCC DROPCLEANBUFFERS
SET STATISTICS IO ON
DECLARE @BeginDate AS datetime, @EndDate AS datetime
SET @BeginDate = '2012-01-01 00:00:00.000'
SET @EndDate = '2012-12-31 00:00:00.000'
 
SELECT SUM(Quantity) AS TotalQuantity, SUM(ActualCost) AS TotalCost
FROM dbo.Transactions
WHERE TransactionDate BETWEEN @BeginDate AND @EndDate

pero al momento de correrlo me manda el siguiente error:
La conversión del tipo de datos varchar en datetime produjo un valor fuera de intervalo.

Saludos.
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

DBCC DROPCLEANBUFFERS

Publicado por jams (93 intervenciones) el 01/03/2017 17:37:56
Buenos días tal y como posteas tu query funciona bien, salvo que en determinado momento la asignación de la fecha que haces estuviera incorrecta de la siguiente manera

declare @transactions table(quantity int,actualcost int,transactiondate datetime)
insert into @transactions values(1,1,GETDATE()),(2,2,GETDATE()-1),(3,3,'20171231 00:00:00.000')

DECLARE @BeginDate AS datetime, @EndDate AS datetime
SET @BeginDate = '2017-01-01 00:00:00.000'
SET @EndDate = '2017-31-12 00:00:00.000'



select * from @transactions

SELECT SUM(Quantity) AS TotalQuantity, SUM(ActualCost) AS TotalCost
FROM @Transactions
WHERE TransactionDate BETWEEN @BeginDate AND @EndDate






entonces se genera el error que comentas

Saludos y Suerte
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

DBCC DROPCLEANBUFFERS

Publicado por Isaias (4558 intervenciones) el 01/03/2017 17:58:56
¿Porque no utilizas el formato ANSI?

SET @BeginDate = '20120101'
SET @EndDate = '20121231'

Ademas, por lo que veo, quieres TODA la informacion del año 2012, entonces, no ocupes BETWEEN, es mejor

WHERE YEAR(TransactionDate) = 2012
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