带有 'like' 的 mysql 查询不适用于 varchar 和空格

标签 mysql sql-like varchar

我有一个数据库,其中有一个表,其中包含 3 个字段,如下所示:

user_id    TimeStamp    Azioni

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

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

我绑定(bind)了几个查询:

查询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:

嗯,是的,我在查询中输入了错误的日期。叹气,我傻了。抱歉浪费了大家的时间。

最佳答案

这个怎么样:

where timestamp like '2012/09/19%'

而且,如果您要调用字段timestamp,您应该将其存储为日期/日期时间/时间戳。如果要将其存储为字符串,则可以将其称为其他名称。 Timestamp 实际上是 MySQL 中类型的名称,因此将其放在不同类型的列名称中会产生很大的误导。

编辑:

你尝试过吗:

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

听起来字段中存在字符串字符,这导致合理的代码无法工作。

关于带有 'like' 的 mysql 查询不适用于 varchar 和空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21647482/

相关文章:

c# - ASP MVC MsSql 到 MySQL 迁移

php - 使用 PHP 将 SQL 查询行添加到新数组

php - 将 PHP 预处理语句与 LIKE 组合

php - 对 mysql 的搜索结果进行排序

mysql - 为什么 MySQL VARCHAR 允许超过最大长度?

php - 在 MySQL 中使用 OR 和 AND

MySQL 在 SELECT 中部分匹配

android - 如何将 varchar 从 sql server 转换为 android 中的图像

mysql - 使用 varchar 作为主键有什么限制?

C# map 和 MySql 画线方法