![](/img/trans.png)
[英]In PHP & MySQL Display date in day month Year Format from database
[英]Select data from mysql using php in between dates got from html form, but date is stored in 3 different columns under day, month, year
我有一个数据库,我想从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是从01/01/99
接收的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');
您的concat语法必须通过:
(CONCAT(day','/','month','/','year) BETWEEN '01/01/01' AND '01/01/99');
顺便说一句:这使字符串比较而不是日期比较,因此您应该更改为日期格式。
STR_TO_DATE(CONCAT('day','/','month','/','year'), '%d/%m/%Y') between STR_TO_DATE('01/01/01' ) and STR_TO_DATE('01/01/99', '%d/%m/%Y')
有关concat语法的更多信息,请参见https://www.w3schools.com/sql/func_mysql_concat.asp以及str_to_date语法https://www.w3schools.com/sql/func_mysql_str_to_date.asp
一些提示:不要在带有列的where子句中使用函数或计算。
在您的情况下:1.从表单中展开日期并得到3部分。 2.您可以这样编写SQL:
SELECT * FROM table
WHERE custid = 'x' AND
(year >= '1' AND year <='99' and month >= '1' and month <= '12' and day >= '1' and day <= '12')
而不是将其作为日期进行比较,我使用concat()将其用作数字值,然后使用php函数,我也将mhtml格式的日期也转换为数字,然后使用函数间的简单性检查值是否介于两者之间。极限。
然后sql变成
SELECT * FROM `ledger-company`
WHERE `companyid` = '10'
AND (CONCAT(year,month,day) BETWEEN '010101' AND '990199')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.