DateTime.Now到mysql datetime

时间:2010-09-03 12:43:01

标签: c# mysql datetime

我遇到了查询问题,得到了类似的内容

command.CommandText = "SELECT " +
        "COUNT(a.`id`) " +
   "FROM " +
        "`messageaccess` a " +
   "WHERE " +
        "a.`Users_LOGIN` = '" + Settings.UserLogin + "' " +
        "AND a.`Status` = '" + Enums.MessageStatus.New + "' " +
        "AND a.`FOLDER` = '" + Enums.MessageFolder.INBOX + "'" +
        "AND a.`ShowAlert` = '" + Enums.YesNo.No + "'" +
        "AND a.`Postponed` <= " + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "";

但是sql抛出异常 您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,以便在第14行的'14:40:37'附近使用正确的语法

尝试了不同的组合,但没有任何作用:(

5 个答案:

答案 0 :(得分:3)

简单的答案是不要将值直接嵌入到SQL中。

使用参数化的SQL语句,将参数值指定为DateTime.Now,一切都会很好:

  • 您的SQL将更容易阅读(因为它只是是代码,而不是数据)
  • 您无需担心数字和日期等内容的格式化
  • 您不会受到SQL injection attacks
  • 的攻击

答案 1 :(得分:2)

您忘记了日期/时间周围的引号。

答案 2 :(得分:1)

尝试使用此行:

"AND a.`Postponed` <= NOW()" 

它应该与当前时间的本机MySql函数一起使用。

答案 3 :(得分:0)

查看名为parameterized queries的内容。他们为您处理这些格式问题。

答案 4 :(得分:0)

您不应构建追加字符串的查询。这不是很安全(sql注入),并且您没有利用ADO .NET功能根据参数类型设置正确的格式。

您应该使用参数化查询。