在sql中的某个日期之前获取值

时间:2016-11-04 03:23:35

标签: 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   

我需要获得这样的行

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

有人知道答案吗?感谢

1 个答案:

答案 0 :(得分:3)

SELECT
    patientID,
    Appt_reason,
    dateOfProcedure
FROM
    tableName
WHERE
    dateOfProcedure < '2016-04-03'

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

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