mysql - 使用 Between 无法正常工作选择带日期的查询

标签 mysql visual-studio-2010 visual-studio-2012

我有这个选择查询:

SELECT field_1, field_2, field_3, field_4
FROM MyTable
Where DateTimeField > '16/04/2013 00:00:00' ;

它返回我all the rows ,甚至是 16/04/2013 之前的那些。

我也尝试过这个:

SELECT dt_cadastro,descricao, projeto, funcionalidade
FROM chamados
Where dt_cadastro BETWEEN '16/04/2013 00:00:00' AND '28/05/2013 23:59:59';

相同的结果...=\

这是我在 MySql Manager 上尝试过的。

当我在我的应用程序上尝试它时,例如:

string sql = @"SELECT proj.descricao AS projeto, func.descricao AS funcionalidade, clb.clube AS cliente, ch.descricao
         FROM chamados ch 
         INNER JOIN projetos proj ON ch.projeto = proj.id 
         INNER JOIN funcionalidades func ON ch.funcionalidade = func.id
         INNER JOIN clubes clb ON ch.clube = clb.id
         WHERE ch.dt_cadastro BETWEEN @dt_inicial AND @dt_final";
   MySqlCommand cmd = new MySqlCommand();
   cmd.CommandType = CommandType.Text;
   cmd.CommandText = sql;
   cmd.Parameter.Add(new MySqlParameter("@dt_inicial", MySqlDbType.DateTime)).Value = dt1
   cmd.Parameter.Add(new MySqlParameter("@dt_final", MySqlDbType.DateTime)).Value = dt2

然后我将此查询的结果分配给 DataSet 。 但是DataSet.Tables[0].Rows.Count总是< 0 .

一切都正常,但自从我改变了我的 Visual Studio 2010VS 2012一切开始出错=\

更新

这两个都有效 MySql manager并在 my application 。像这样:

SELECT proj.descricao AS projeto, func.descricao AS funcionalidade, clb.clube AS cliente, ch.descricao
            FROM chamados ch 
            INNER JOIN projetos proj ON ch.projeto = proj.id 
            INNER JOIN funcionalidades func ON ch.funcionalidade = func.id
            INNER JOIN clubes clb ON ch.clube = clb.id
            WHERE ch.dt_cadastro BETWEEN '2013/04/28' AND '2013/05/28'  

但是当我尝试像(hh:mm:ss,例如 23:59:59)那样花时间时,它不起作用。 不过没关系。
我一直用,

MySqlCommand.Parameter.Add(new MySqlParameter("@date1", MySqlDbType.DateTime)).value = xxx

并且一直有效。我将在 dd/mm/yyyy 中获取日期格式。一直在工作,现在我该怎么办?变量xxx上面是string ,因为我需要添加 hh:mm:ss 。我将此更改为 DateTime变量并且工作... o.O 为什么它曾经像我一样工作但现在不再工作了。

更新2
我已经发现问题了。
我不知道为什么会这样,所以如果有人可以向我解释原因,我将不胜感激!
我正在使用 string传入我的变量类型 MySqlCommand.Parameter .
我将类型更改为 DateTime并工作...不知道为什么它停止以最初的方式工作。但现在它正在发挥作用。谢谢!

最佳答案

试试这个:

SELECT dt_cadastro,descricao, projeto, funcionalidade
FROM chamados
Where dt_cadastro BETWEEN CONVERT('16/04/2013 00:00:00', DATETIME) AND
CONVERT('28/05/2013 23:59:59', DATETIME);

关于mysql - 使用 Between 无法正常工作选择带日期的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16791721/

相关文章:

c# - 使用 Visual C++ 创建的 WinRT DLL 无法在 Windows 应用商店应用程序中加载

mysql - 在 rails sqlite vs mysql 中随机选择

mysql - 使用两张 table 两次

php - 向Mysql数据库中插入数据时出错

.net - 为什么关闭 TrackFileAccess 后 Tracker.exe 响应文件仍然出现错误?

visual-studio-2010 - MSBuild <FileWrites> 项目不执行任何操作

mysql - 子查询返回超过 1 行,试图从 sku 获取今天和昨天的价格

visual-studio - 模式比较和更新注释掉未使用的代码

不支持 Visual Studio 中的 Git 同步返回 URI 格式

visual-studio - 解决方案资源管理器中文件上的蓝色问号