0

我有这个选择查询:

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 管理器上试过的。

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

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 managermy 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格式的日期。一直工作,现在我该怎么办?上面的变量xxxstring,因为我需要添加hh:mm:ss。我将其更改为DateTime变量并工作...... oO 为什么它曾经像我一样工作,但现在它不再工作了。

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

4

3 回答 3

0

尝试这个:

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);
于 2013-05-28T12:14:42.747 回答
0

请试一试:

SELECT dt_cadastro,descricao, projeto, funcionalidade
来自查马多斯
其中 dt_cadastro BETWEEN '2013-04-16' AND '2013-05-28';
于 2013-05-28T12:40:09.533 回答
0
SELECT * FROM po_header WHERE (STR_TO_DATE(date_format(PO_DATE, '%d/%m/%Y'), '%d/%m/%Y %T') BETWEEN STR_TO_DATE(@param1, '%d/%m/%Y %T') AND STR_TO_DATE(@param2, '%d/%m/%Y %T'))

我知道这可能看起来很乱而且很奇怪,但它有效,我试图让它更短但它不起作用 PO_DATE 是 MySql 中的列 Date 并且它适用于 DataSource 的 Fill

于 2016-03-15T11:16:44.467 回答