我有一个数据库,其中有一个表,其中包含 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/