使用'like'的mysql查询不能与varchar和space一起使用

时间:2014-02-08 14:54:11

标签: mysql sql-like varchar

我有一个Db,其中一个表有3个字段,如下所示:

user_id    TimeStamp    Azioni

其中'timestamp'字段是varchar(25),如下所示:2012/09/19 16:34:01.95 它是varchar而不是时间戳值,因为我需要它以所示的格式。 即使我想,我也无法改变它的类型。

现在,我正在尝试获取具有相同日期的所有数据库条目。例如,当Timestamp包含2012/09/19

我绑了几个问题:

查询0:

SELECT  Azioni.Action
FROM Azioni
WHERE TimeStamp LIKE '2012/09/19%'

查询1:

SELECT `Azioni`.*
FROM Azioni
Where `TimeStamp` LIKE  '{2012/09/19}%'

查询2:

SELECT  `Azioni` . * 
FROM Azioni
WHERE LOCATE(  '2008/09/19',  `TimeStamp` ) >0

查询3:

SELECT  `Azioni` . * 
FROM Azioni
WHERE INSTR(  `TimeStamp` ,  '2012/09/19' ) >0

查询4:

SELECT * FROM `Azioni` 
WHERE `TimeStamp` like '2012|/09|/19%' escape '|'

我总是得到:MySQL返回一个空结果集(即零行)。

但我确信有包含所述时间戳的行。我究竟做错了什么?日期和时间之间的“空间”是否会产生问题?如果是这样我怎么解决呢?你有什么建议吗?

编辑: Aa建议,来自

SELECT TIMESTAMP, HEX( TIMESTAMP ) 
FROM Azioni

我得到以下

2009-06-06 09:28:00.0000    323030392D30362D30362030393A32383A30302E30303030
2009-06-06 09:29:00.0000    323030392D30362D30362030393A32393A30302E30303030
2009-06-06 09:30:51.0000    323030392D30362D30362030393A33303A35312E30303030
2009-06-06 14:25:00.0000    323030392D30362D30362031343A32353A30302E30303030
2009-06-06 14:26:00.0000    323030392D30362D30362031343A32363A30302E30303030

编辑2:

是的,是的,我在查询中输入了错误的日期。叹了口气,我很蠢。很抱歉浪费你的时间。

2 个答案:

答案 0 :(得分:2)

这个怎么样:

where timestamp like '2012/09/19%'

而且,如果您打算调用字段timestamp,则应将其存储为日期/日期时间/时间戳。如果要将其存储为字符串,则将其称为其他内容。 Timestamp实际上是MySQL中某个类型的名称,因此在具有不同类型的列名中使用它是非常误导的。

编辑:

你试过了吗?

where left(timestamp, 10) = '2012/09/19'

听起来字段中有字符串字符,这会妨碍合理的代码工作。

答案 1 :(得分:0)

SELECT * FROM Azioni 在哪里`TimeStamp'喜欢'2012/09/19%'