【问题标题】:How to read from the two same dates without input the time如何在不输入时间的情况下从两个相同的日期读取
【发布时间】:2021-04-19 02:47:53
【问题描述】:

我有一个如下查询。

SELECT
occupation AS 'Contact occupation',
sum(total) AS 'Quantity'
FROM
(
SELECT
CASE
WHEN contacts.occupation IS NULL THEN 'Other'
WHEN trim(contacts.occupation) = '' THEN 'Other'
ELSE contacts.occupation
END AS occupation, count(DISTINCT(concat(patients.id, '-', individual_appointments.practitioner_id))) AS total
FROM
individual_appointments
JOIN patients ON
patients.id = individual_appointments.patient_id
JOIN practitioners ON
practitioners.id = individual_appointments.practitioner_id
JOIN businesses ON
businesses.id = individual_appointments.business_id
JOIN referral_sources ON
referral_sources.patient_id = individual_appointments.patient_id
JOIN referral_source_types ON
referral_source_types.id = referral_sources.referral_source_type_id
LEFT JOIN contacts ON
referral_sources.referring_contact_id = contacts.id
WHERE
patients.created_at BETWEEN '2018-05-22' AND '2018-05-22'
AND CONVERT(NVARCHAR(100), referral_source_types.name) = 'Contact' [[
AND {{practitioner}}]] [[
AND {{clinic}}]]
AND isnull(individual_appointments.cancelled_at, '') = ''
AND individual_appointments.did_not_arrive <> 1
GROUP BY
contacts.occupation ) marketing_referrers
GROUP BY
occupation,
marketing_referrers.total
ORDER BY
total DESC;

当我提交类似以下patients.created_at BETWEEN '2018-05-22' AND '2018-05-22' 的日期时,它不会返回任何内容,但如果我输入BETWEEN '2018-05-22' patients.created_at 'AND' 2018-05-23',它会返回一个值。

我想如果我只输入两个相同的日期而不输入时间,那么时间将是00:00:00 - 00:00:00

当我们输入两个相同的日期而不输入时间时如何读取00:00:00 - 23:59:59

表格中的日期格式填写如下"Thursday, August 20, 2020, 9:49 AM",但只要输入日期即可读取,例如2020-08-20

你的帮助对我很重要,谢谢

【问题讨论】:

  • 为什么哦,你为什么不缩进任何东西???
  • 使用patients.created_at BETWEEN '2018-05-22 00:00:00' AND '2018-05-22 23:59:59'。如果设置了列的fsp,则根据小数部分添加上限,例如'2018-05-22 23:59:59.999'
  • The date format in the table is filled as follows "Thursday, August 20, 2020, 9:49 AM"这句话我看不懂;至少,我希望我不会)
  • @Strawberry 抱歉,我的意思是“2020 年 8 月 20 日,星期四,上午 9:49”是表中的数据值。数据类型为日期时间
  • @Akina 如果我们输入两个相同的日期而没有时间,还有其他方法吗?就像两个相同的日期,但可以读取 00:00:00 - 23:59:59 而无需输入时间?

标签: mysql sql date datetime time


【解决方案1】:

如果您的数据类型是datetime,那么您可以添加:

WHERE patients.createdAt >= '2018-05-22' and patients.createdAt < '2018-05-23'

因为2018-05-22 = 2018-05-22 00:00:00

如果你只想输入一个日期,那么你可以使用这个

 WHERE patients.createdAt >= '2018-05-22 00:00:00'
       AND patients.createdAt <= '2018-05-22 23:59:59'

或者你可以简单地使用它

 WHERE patients.createdAt LIKE '2018-05-22%'

它将为您提供所有值“2018-05-22”的行

【讨论】:

  • 谢谢@18Man
  • hi @18Man 这些是两个不同的日期,我的意思是如果你只输入相同的两个日期而不输入它将产生 00:00:00 - 23:59:59 的时间。示例:我输入 patients.created_at> = '2018-05-22' 和 patients.created_at
【解决方案2】:

尝试使用...WHERE DATE(patients.created_at) = '2018-05-22'...

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-09-12
  • 2022-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多