我有两个表,即 jobs
和 company
格式如下:
表 1 作业
company_name job_title category job_posted_date
============ ================= =========== ===============
ibm xamarin developer it jobs 26-09-2018
tech mahindra php developer it jobs 27-09-2018
milkyway java developer it jobs 15-08-2018
表2 公司
company_name company_logo
============ ============
ibm logo_ibm.png
tech mahindra logo_tech.png
milkyway logo_milkyway.png
我的查询是:
SELECT company.company_logo, post_jobs.company_name, jobs.job_title, jobs.job_posted_date
FROM company
INNER JOIN jobs
on jobs.company_name = company.company_name
WHERE jobs.category = 'it Jobs' and (jobs.job_posted_date between '01-09-2018' and '01-10-2018')
ORDER BY jobs.job_posted_date desc
当我点击此查询并找到 01-09-2018
到 01-10-2018
之间的数据时,它没有显示两个日期之间的数据。那么我该如何解决这个问题呢?请帮助我。
谢谢
最佳答案
我发现您的 job_posted_date
列有问题。也许您正在那里存储文本日期。假设不是,并且它是一个真正的日期列,您可以尝试这个查询:
SELECT
c.company_logo,
j.company_name,
j.job_title,
j.job_posted_date
FROM company c
INNER JOIN jobs j
ON j.company_name = c.company_name
WHERE
j.category = 'it Jobs' AND
j.job_posted_date BETWEEN '2018-09-01' AND '2018-10-01'
ORDER BY
j.job_posted_date DESC;
请注意,我比较的是有效的 MySQL 日期文字,例如 '2018-09-01
'。您使用的格式无效。
如果 job_posted_date
列实际上是以 DD-MM-YYYY
格式记录文本 日期,那么您必须使用STR_TO_DATE
首先转换它们:
SELECT
c.company_logo,
j.company_name,
j.job_title,
j.job_posted_date
FROM company c
INNER JOIN jobs j
ON j.company_name = c.company_name
WHERE
j.category = 'it Jobs' AND
STR_TO_DATE(j.job_posted_date, '%d-%m-%Y') BETWEEN '2018-09-01' AND '2018-10-01'
ORDER BY
j.job_posted_date DESC;
这个故事的寓意是在 MySQL 中存储日期信息时始终使用正确的日期列。并始终将有效的日期/时间文字与这些列进行比较。
关于php - 如何使用内部联接从两个日期之间的数据库中获取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52585376/