我有一个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:
是的,是的,我在查询中输入了错误的日期。叹了口气,我很蠢。很抱歉浪费你的时间。答案 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%'