繁体   English   中英

如何使用内部联接从两个日期之间从数据库获取数据?

[英]How to get data from database between two dates using inner join?

我有两个表,即jobscompany ,格式如下:

table1 jobs

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

table2 company

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-201801-10-2018之间的数据时, 01-09-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中存储日期信息时总是使用适当的日期列。 并始终将有效的日期/时间文字与这些列进行比较。

您输入的日期格式有误。您查询的日期格式必须与保存在数据库中的日期格式相同,即(YYYY-MM-DD),因此根据以下新查询给出:

SELECT company.company_logo, 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 '2018-09-01' and '2018-10-01') 
ORDER BY jobs.job_posted_date desc

查询的输出也在随附的屏幕快照中。 https://i.stack.imgur.com/T2SWb.png

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM