我需要从最长的时间到达时获得患者身份证明

时间:2016-06-27 10:35:23

标签: mysql

我需要从最长时间日期

获取patient_id

Time_Arrived大于'01 -01-2016'

样品

    Patien_ID  TIME_ARRIVED
    1234       01-01-2013
    1234       01-02-2014
    1235       01-02-2014
    1235       01-02-2015 
    1236       01-02-2015
    1236       01-03-2016
    1237       01-03-2015
    1237       01-04-2016

结果必须

Patient_id
1236
1237

3 个答案:

答案 0 :(得分:0)

看起来time_arrived是一个日期列(不是日期时间),那么你可以使用这个查询:

select distinct patient_id
from patients
where time_arrived>='2016-01-01'

答案 1 :(得分:0)

请使用以下功能以MySQl日期格式更新您的time_arrived,即'yyyy-mm-dd':

DELIMITER $$

USE `db_name`$$

DROP FUNCTION IF EXISTS `strtotime`$$

CREATE FUNCTION `strtotime`(input_string VARCHAR(50)) RETURNS VARCHAR(50)
BEGIN

DECLARE var_upd_str VARCHAR(50);


IF(input_string LIKE '%-%-%' AND input_string NOT LIKE '%-%-%-%') THEN

SET var_upd_str= CONCAT(SUBSTRING_INDEX(input_string,'-',-1),'-',SUBSTRING_INDEX(SUBSTRING_INDEX(input_string,'-',-2),'-',1),'-',SUBSTRING_INDEX(input_string,'-',1));

END IF;

RETURN var_upd_str;

END$$

DELIMITER ;

更新你的表格: -

UPDATE patient SET time_arrived=strtotime(time_arrived);

ALTER TABLE patient CHANGE time_arrived time_arrived DATE NOT NULL;

如果您希望患者身份在最长时间到达且到达时间应大于OR等于'2016-01-01':

SELECT patient_id FROM patient WHERE time_arrived=(SELECT MAX(time_arrived) AS date_arr  FROM patient) AND time_arrived>='2016-01-01';

如果您希望患者身份证的到达时间大于或等于'2016-01-01':

SELECT patient_id FROM patient WHERE  time_arrived>='2016-01-01';

答案 2 :(得分:-1)

试试这个简单的

按时间推移的desc限制2从患者中选择patient_id

此处限制将显示2个结果,desc将按时间到达列数据的降序显示日期。