我有一个数据库,我想选择与日期之间的日期从html表单得到的数据。
假设数据库有列- custid(int)(5)
, query(varchar)(100)
, day(int)(2)
, month(int)(2)
, year(int)(2)
.
我从表格中得到日期 dd/mm/yy
因此,我尝试了这个,但它不起作用。
SELECT * FROM table
WHERE custid = 'x' AND
(CONCAT(day'./.'month'./.'year) AS DATE BETWEEN '01/01/01' AND '01/01/99');
//在哪里 01/01/2001
是开始日期和 01/01/99
从html表单接收,x是从html表单接收的custid)。
有办法解决吗?
sql错误:
1064-您的sql语法有错误;检查与您的mariadb服务器版本相对应的手册,以了解要使用的正确语法
“近” month
'./.' year
)日期介于'01/01/2001'和'01/01/2099')限值0,25'(第3行)
编辑1:
在浏览了concat()函数文档并回答了jens的问题之后,更新后的sql查询。
SELECT * FROM table
WHERE custid = 'x' AND
(CONCAT(day','/','month','/','year) AS DATE BETWEEN '01/01/01' AND '01/01/99');
3条答案
按热度按时间iecba09b1#
我没有将它作为日期进行比较,而是使用concat()将它作为一个数值,然后使用php函数将从mhtml表单得到的日期也转换为数字,然后使用简单的between函数检查值是否在限制之间。
然后sql就变成了
fwzugrvs2#
一些提示:不要在带有列的where子句中使用函数或计算。
在你的情况下:1。从表格中分解日期,得到3个部分。2可以这样编写sql:
jtw3ybtb3#
concat语法必须:
顺便说一句:这使得字符串比较不是日期比较,所以您应该更改为日期格式。
有关concat语法的更多信息,请参见https://www.w3schools.com/sql/func_mysql_concat.asp 对于str\u to\u date语法https://www.w3schools.com/sql/func_mysql_str_to_date.asp