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

bihw5rsg  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(274)

我有两张table。 jobs 以及 company 格式如下:
表1 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

表2 `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 我看不出数据在两个日期之间的位置。那么我该如何解决这个问题呢?请帮帮我。
谢谢您

wko9yo5t

wko9yo5t1#

我发现你的电脑有问题 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中存储日期信息时总是使用一个适当的日期列。并始终将有效的日期/时间文本与这些列进行比较。

pcww981p

pcww981p2#

您的日期格式有误。在您的查询中,日期格式必须与保存在数据库中的日期格式相同,即(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

相关问题