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