mysql 如何在日期中使用大于运算符?

ufj5ltwl  于 2023-08-02  发布在  Mysql
关注(0)|答案(7)|浏览(112)

不知道这是怎么回事。以下是phpMyAdmin的查询:

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

字符串
但是我总是返回表中的所有记录,包括开始日期为2012-11-01的记录。怎么回事?

tktrz96b

tktrz96b1#

你用单引号把start_date括起来,导致它变成了字符串,请使用backtick

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';

字符串

  • SQLFiddle演示
ttvkxqim

ttvkxqim2#

在您的语句中,您将一个名为start_date的字符串与时间进行比较。
如果start_date是一个列,则应该是

SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';

字符串
(no撇号)或

SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';


(with反向标记)。
希望这对你有帮助。

hkmswyz6

hkmswyz63#

试试这个

SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';

字符串

dw1jzc5e

dw1jzc5e4#

我试过了,但上面没有工作后,研究发现下面的解决方案。

SELECT * FROM my_table where DATE(start_date) > '2011-01-01';

字符串
Ref

ippsafx7

ippsafx75#

加上这个,因为没有提到。
第一个月
因为这才是我真正的工作。在两个比较值上添加date()函数。
PS:正如@NikolajHansen在评论中指出的,这可能不是理想的解决方案,因为这可能会在每一行中运行日期函数。

093gszye

093gszye6#

在我的情况下,我的专栏是一个日期时间,它一直给我所有的记录。我所做的是包括时间,见下面的例子

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';

字符串

zqry0prt

zqry0prt7#

如果您正在比较时间戳-您可以尝试以下

select * from table where columnInTimestamp > ((UNIX_TIMESTAMP() * 1000) - (1*24*60*60*1000))

字符串
这里UNIX_TIMESTAMP()给出了当前的时间戳,其中“12460601000”是1天的时间戳--通过这个,你可以找到在1天或2天内创建的数据。

相关问题