Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询未返回结果_Sql_Sql Server 2005 - Fatal编程技术网

Sql 查询未返回结果

Sql 查询未返回结果,sql,sql-server-2005,Sql,Sql Server 2005,我试图执行以下查询以返回一个月内的第一个和最后一个日期,但该查询不返回任何值 DECLARE @today AS DATETIME SET @today= CAST('2012-08-24' AS DATETIME) --First day of month SELECT DATEADD(dd, -DAY(@today) + 1, @today) UNION --Last day of month SELECT DATEADD(dd, -DAY(DATEADD(mm, 1, @today

我试图执行以下查询以返回一个月内的第一个和最后一个日期,但该查询不返回任何值

DECLARE @today AS DATETIME 
SET @today= CAST('2012-08-24' AS DATETIME)

--First day of month

SELECT DATEADD(dd, -DAY(@today) + 1, @today)
UNION
--Last day of month

SELECT DATEADD(dd, -DAY(DATEADD(mm, 1, @today)), DATEADD(mm, 1, @today))
但是,在执行时,我得到以下结果:

10:36:13  [DECLARE - 1 row(s), 0.005 secs]  Command processed
... 1 statement(s) executed, 1 row(s) affected, exec/fetch time: 0.005/0.000 sec  [1 successful, 0 warnings, 0 errors]
我希望看到查询的结果,而不仅仅是命令已被处理。如何解决这个问题?如果使用它而不声明如下变量:

--First
SELECT DATEADD(dd, -DAY(CAST('2012-08-24' AS DATETIME)) + 1, CAST('2012-08-24' AS DATETIME))
UNION
--Last day of month
SELECT DATEADD(dd, -DAY(DATEADD(mm, 1, CAST('2012-08-24' AS DATETIME))), DATEADD(mm, 1, CAST('2012-08-24' AS DATETIME)))
DECLARE @today AS DATETIME 
SET @today= CAST('2012-08-24' AS DATETIME)

--First day of month

SELECT DATEADD(dd, -DAY(@today) + 1, @today)
UNION
--Last day of month

SELECT DATEADD(dd, -DAY(DATEADD(mm, 1, @today)), DATEADD(mm, 1, @today))
SET NOCOUNT ON;
它返回预期结果:

2012-08-01 00:00:00
2012-08-31 00:00:00
2012-08-01 00:00:00
2012-08-31 00:00:00

如何解决此问题?

使用上述
设置NOCOUNT ON在查询的末尾,如下所示:

--First
SELECT DATEADD(dd, -DAY(CAST('2012-08-24' AS DATETIME)) + 1, CAST('2012-08-24' AS DATETIME))
UNION
--Last day of month
SELECT DATEADD(dd, -DAY(DATEADD(mm, 1, CAST('2012-08-24' AS DATETIME))), DATEADD(mm, 1, CAST('2012-08-24' AS DATETIME)))
DECLARE @today AS DATETIME 
SET @today= CAST('2012-08-24' AS DATETIME)

--First day of month

SELECT DATEADD(dd, -DAY(@today) + 1, @today)
UNION
--Last day of month

SELECT DATEADD(dd, -DAY(DATEADD(mm, 1, @today)), DATEADD(mm, 1, @today))
SET NOCOUNT ON;
为我工作,然后我返回以下预期结果:

2012-08-01 00:00:00
2012-08-31 00:00:00
2012-08-01 00:00:00
2012-08-31 00:00:00

然而,我不知道为什么需要这个声明。知道为什么吗?

使用上述
设置NOCOUNT ON在查询的末尾,如下所示:

--First
SELECT DATEADD(dd, -DAY(CAST('2012-08-24' AS DATETIME)) + 1, CAST('2012-08-24' AS DATETIME))
UNION
--Last day of month
SELECT DATEADD(dd, -DAY(DATEADD(mm, 1, CAST('2012-08-24' AS DATETIME))), DATEADD(mm, 1, CAST('2012-08-24' AS DATETIME)))
DECLARE @today AS DATETIME 
SET @today= CAST('2012-08-24' AS DATETIME)

--First day of month

SELECT DATEADD(dd, -DAY(@today) + 1, @today)
UNION
--Last day of month

SELECT DATEADD(dd, -DAY(DATEADD(mm, 1, @today)), DATEADD(mm, 1, @today))
SET NOCOUNT ON;
为我工作,然后我返回以下预期结果:

2012-08-01 00:00:00
2012-08-31 00:00:00
2012-08-01 00:00:00
2012-08-31 00:00:00

然而,我不知道为什么需要这个声明。知道为什么吗?

你是如何执行的吗?试着打开
设置NOCOUNT在声明的开头。它工作正常。您的两个SQL查询都返回相同的结果。我不这么认为。我正在使用DbVisualizer执行它。您是如何执行它的?请尝试启用
设置NOCOUNT在声明的开头。它工作正常。您的两个SQL查询都返回相同的结果。我不这么认为。我正在使用DbVisualizer执行它。某些操作虽然不返回结果集,但仍然会从服务器返回信息,例如,如果执行
DELETE
,则会返回已删除的行数。我假设您使用的是DBVisualizer的免费版本,它不支持多个语句,因为操作
SET@Today=CAST(…
正在向DBVisualiser返回一条消息,其中一行受
操作的影响,这被认为是您唯一允许的语句。有关MSDN上NOCOUNT的详细信息,请阅读某些操作,尽管它们不返回结果集,但仍会从服务器返回信息,例如,如果您执行
删除操作
返回删除的行数。我假设您使用的是免费版本的DBVisualizer,它不支持多个语句,因为操作
SET@Today=CAST(…
正在向DBVisualiser返回一条消息,其中一行受
SET
操作的影响,这被认为是您唯一允许的语句。有关详细信息,请阅读MSDN上的NOCOUNT