我需要从最长时间日期
获取patient_idTime_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
答案 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将按时间到达列数据的降序显示日期。