我只想在mysql中使用 150700001 , 150600001 (yymm00001)
格式化的ID
列,这也是primary key
。我已经尝试过以下代码
select ifnull(lpad(max(pid)+1,9, '0'),
concat(concat(DATE_FORMAT(CURDATE(), '%y'),
DATE_FORMAT(CURDATE(), '%m')),lpad('1',5,'0'))) pid
from patient_admission;
我想:
╔═══════════╗
║ 150600001 ║
║ 150600002 ║
║ 150600003 ║
║ 150700001 ║
║ 150600002 ║
╚═══════════╝
等等
但它下个月没有回来。 日Thnx。
答案 0 :(得分:0)
这是我的表结构:
1. pid {char(9), Primary Key}
2. pname
3. age
4. gender
5. marital_status
6. profession
7. father_name
8. mother_name
9. present_addr
10. permanent_addr
11. phone
12. contact_person_name
13. contact_person_phone
14. contact_person_relation
15. contact_person_addr
16. consultant_doctor
17. onduty_doctor
18. admission_fee
19. admission_date
20. bed_allotment
21. status
您提到的上述代码,已经过测试。
我在CodeIgniter上运行它:
模型部分:
public function get_patient_id(){
$sql = "select ifnull(lpad(max(pid)+1,9, '0'), concat(concat(DATE_FORMAT(CURDATE(), '%y'), DATE_FORMAT(CURDATE(), '%m')),lpad('1',5,'0'))) pid from patient_admission";
$qry = $this->db->query($sql);
$ra = $qry->result_array();
return $ra[0];
}
控制器部分:
public function entry(){
$data['patient_id'] = $this->Patient_admission_model->get_patient_id();
$this->load->view( 'patient/admission/entry', $data );
}
答案 1 :(得分:0)
最后我已成功完成,jaust必须添加子查询的线索:
select ifnull(lpad(max(pid)+1,9, '0'), concat(DATE_FORMAT(CURDATE(), '%y%m'),lpad('1',5,'0'))) pid from patient_admission where id_generator = (select DATE_FORMAT(CURDATE(), '%y%m') id_generator)
我刚刚在patient_admission表中创建了 id_generator 另一列 和gmdate(' ym',time()+ 3600 * 6);插入期间的此代码
全部。顺便说一句,多亏了你们所有人@Drew Pierce