17

我有一个表,其中包含一个Time存储时间戳值的列、一个存储 aName的列和一个存储 a 的列Status

我试图找到一个查询来更新给定时间戳之前的所有条目,如下所示:

UPDATE `Table` 
SET Status=1
WHERE Name='personname' AND 'Time'<'2012-12-23 18:00:00'

查询有效,但没有任何变化。

当试图显示WHERE零件的结果时,没有结果。

我究竟做错了什么?

4

3 回答 3

41

您正在比较字符串文字'Time'

'Time'<'2012-12-23 18:00:00'

尝试比较时间列:

Time < '2012-12-23 18:00:00'

或者,如果必须,请将其括在反引号中:

`Time` < '2012-12-23 18:00:00'

SQL Fiddle 上的实时示例。

于 2012-12-28T12:04:41.627 回答
3

如果您确定反引号和单引号仍然不起作用,那么试试这个,

UPDATE `Table`SET Status=1
WHERE Name='personname' AND 
Time < STR_TO_DATE('2012-12-23 18:00:00','YYYY-MM-DD HH:MI:SS')
于 2012-12-28T12:13:24.520 回答
0

试试这个:

UPDATE `Table`SET Status=1
WHERE Name='personname' AND 
Time < UNIX_TIMESTAMP(STR_TO_DATE('23-12-2012 18:00:00',' "%d-%m-%Y %h:%i:%s'));
于 2019-06-10T07:50:39.310 回答