【问题标题】:SET DATEFORMAT returns zero records in Classic ASPSET DATEFORMAT 在经典 ASP 中返回零记录
【发布时间】:2013-05-12 18:08:03
【问题描述】:

我有一个稍微令人困惑的问题。在 SQL Server 中,我运行一个以

开头的查询

设置日期格式 ymd;

然后它在“2013-05-01”和“2013-05-13”之间添加了日期。

当我在 SQL Server 2005 Management Studio 上运行它时,它会返回我想要的结果。但是,当我在 Classic ASP 中通过 ADODB 运行相同的 SQL 语句时,它返回零记录。

如果我取出 SET DATEFORMAT ymd; ASP 确实返回记录,但日期格式不正确。

为什么通过 ASP 运行查询不会产生结果,但 SQL Server Management Studio 会产生结果? (它们也都在同一个登录名下运行!)

该列是“日期时间”

【问题讨论】:

  • 这取决于您如何通过 ASP 调用此 sql 语句。你能显示你的asp代码吗?
  • 还有该列的数据类型是什么?
  • 列类型为“日期时间”。 ASP 的调用方式如下:objRS.Open SQLDate, objConn, 1,1 TotalRecords = objRS.RecordCount 在这种情况下,TotalRecords 为 0。但 SQL Server 将返回 50 多条记录。
  • 尝试添加这一行:objRS.NextRecordSet() 打开后。第一条语句可能会生成自己的 Recordset。
  • 运气不好 :( - 它只是返回“当前提供程序不支持从一次执行中返回多个记录集。”所以我猜它没有打开多个记录集。

标签: sql-server asp-classic


【解决方案1】:

正如@ShadowWizard 所说,尝试移动到下一个记录集。

更优雅的解决方案是将SET NOCOUNT ON 放在查询之前。这会阻止显示受 Transact-SQL 语句或存储过程影响的行数的消息作为结果集的一部分返回。

示例:

SET NOCOUNT ON; SET DATEFORMAT ymd; select * from YourTable

【讨论】:

  • 也不走运。啊,这个问题简直是疯了!
猜你喜欢
  • 2011-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多