0

有这个架构:

Doctor(license_no, doctor_name, specialty)

Patient(pat_id, pat_name, pat_address, pat_phone, date_of_birth)

Visit(license_no, pat_id, date_of_visit, type, diagnosis, charge) 

我必须翻译Patient (join sign) pat_id(date>=1-1-2005^ date<1-1-2006(Visit)) ,我认为这意味着选择在 2005 年 1 月 1 日至 2006 年 1 月 1 日之间就诊的患者,所以我提出了以下查询:

SELECT p.pat_ID FROM Patient p INNER JOIN Visit v 
ON (p.pat_ID = v.pat_ID)
WHERE date_of_visit <= '01-01-2005' AND date_of_visit < '01-01-2006'

关系代数语句是否意味着我的想法并且 SQL 查询返回正确的结果?

4

1 回答 1

1

在为 WHERE 条件指定日期范围时,您的语法是正确的,但您的第一个运算符看起来不正确。(>=不是<=)。

如果您需要选择两个日期之间的记录,包括开始日期但不包括结束日期(称为闭-开表示),语法应如下所示:

...
WHERE date_of_visit >= date_start AND date_of_visit < date_end

如果您需要选择两个日期之间的记录(不包括这些日期),则语法应如下所示:

...
WHERE date_of_visit > date_start AND date_of_visit < date_end

如果您想选择两个日期之间的记录,包括这些日期,您应该使用:

...
WHERE date_of_visit >= date_start AND date_of_visit <= date_end

大于和等于运算符允许您指定是否希望日期范围包含边界日期。

于 2011-12-12T23:49:43.507 回答