查询带有getdate()列的表时出现格式错误

本文关键字:错误 格式 getdate 查询 | 更新日期: 2023-09-27 17:52:55

当有人在我的网站上搜索时,在tbl_search表中创建了一条记录。数据库通过将getdate()作为数据绑定来决定时间戳是什么。

我正在尝试从这个表中获取所有的数据:

@{
  WebMartix.Data.Database DB = WebMatrix.Data.Database.Open(MyConString)
  var data = DB.Query("SELECT * FROM tbl_search"); // <<<<<< error occurrs here <<<<<<
  foreach (var d in data){
    @d.phrase
  }
}

错误为:Input string was not in a correct format.

但是,VS中的帮助窗口有一个故障排除提示:

将字符串转换为DateTime时,在将每个变量放入DateTime对象之前,先解析字符串以获取日期。

  • 如果我将表更改为没有getdate()数据绑定的表,则可以工作。
  • 它的工作原理,当我运行相同的查询SQL管理工作室。
  • 我把查询在一个存储过程中,它有相同的结果:在SQL mgmt工作室工作,但不是在网站上。

我做了大量的研究,但为了简洁起见,我决定不展示它,特别是因为我在写问题的最后偶然发现了解决方案

查询带有getdate()列的表时出现格式错误

查询中的星号(*)导致错误。

我用phrase, timestamp代替它,它工作了:

@{
  WebMartix.Data.Database DB = WebMatrix.Data.Database.Open(MyConString)
  var data = DB.Query("SELECT phrase, timestamp FROM tbl_search");
  foreach (var d in data){
    @d.phrase
  }
}

我研究这个问题已经有一段时间了,直到我通过反复试验找到了解决方案。我在网上找不到关于这个WebMatrix的文档…(错误)也许吗?所以我决定张贴,希望下一个人可以找到它更容易,也许有人更专业的可以解释为什么星号不工作在查询中,但只有当表有一个getdate()生成的列