在SQL中的特定日期之前获取值

joa*_*oan 1 sql date multirow

我有一个关于在感染日期之前获取多行的问题:

patientID   Appt_reason dateofProcedure
1                        1/2/2016
1                        1/3/2016
1             infectoin  1/4/2016
2                        3/1/2016
2                        3/3/2016
3                        3/4/2016
3             infectoin  3/5/2016
3                        3/6/2016
3                        3/7/2016
5                        2/2/2016
5             infectoin  2/3/2016
5                        2/4/2016   
Run Code Online (Sandbox Code Playgroud)

我需要得到这样的行

patientID   Appt_reason dateofProcedure
1                       1/2/2016
1                       1/3/2016
1          infectoin    1/4/2016
3                       3/4/2016
3          infectoin    3/5/2016
5                       2/2/2016
5          infectoin    2/3/2016
Run Code Online (Sandbox Code Playgroud)

有人知道答案吗?谢谢

Dai*_*Dai 5

SELECT
    patientID,
    Appt_reason,
    dateOfProcedure
FROM
    tableName
WHERE
    dateOfProcedure < '2016-04-03'
Run Code Online (Sandbox Code Playgroud)

注意我使用的是ISO-8601格式,该格式是明确的,并且受所有现代数据库系统的支持。

请注意,它使用的是<(小于)运算符,而不是<=(小于或等于),因为在SQL中,日期值实际上可以是日期时间值,因此'2016-02-01' >= '2016-02-01 01:00'实际上是假的,因为'2016-02-01'它的隐藏时间成分等于午夜,午夜过后是凌晨1点。