在mySQL中插入/选择

时间:2016-10-14 08:13:51

标签: mysql

我想在pat_id表中选择所有pat_date_hired及其patient,然后将其插入appointment表。

pat_idpat_id表中appointment的值相同,pat_date_hired的值为app_date,但必须更改年份到今年。

例如:如果pat_date_hired = 10-26-2014,则app_date必须为10-26-2016

这是一个想法:

insert into appointment (pat_id, app_date, app_type) 
values
(*select the pat_id and pat_date_hired and change the year to current year*, "PE")

我是MySQL的新手。我的知识非常有限。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:0)

尝试使用DATE_FORMAT更改年份

示例如下

insert into appoinment (pat_id, app_date, app_type) value(
SELECT pat_id FROM patient_table where pat_id = appointment_table.pat_id
,
DATE_FORMAT(SELECT pat_date_hired FROM patient_table where pat_id = appointment_table_pat_id, YEAR(current_DATE)+'/%m/%d'))

答案 1 :(得分:0)

这是我在SQL Server中使用的逻辑(你需要找到生成app_date的逻辑的替换。在MySql中应该有类似的东西):

INSERT INTO appointment (pat_id, app_date, app_type)
SELECT 
      pat_id
      ,DATEADD(yy, YEAR(GETDATE()) - YEAR(pat_date_hired), pat_date)
      , <value for app_type or app_type column> 
FROM patient_table

答案 2 :(得分:0)

首先,我会就您使用的日期格式给出建议;月日不会被mysql识别;你会更好地使用Y-m-d

说;第一步,使用STR_TO_DATE(date_string,format)将日期转换为有效的mysql日期;第二步,使用YEAR(NOW())获得当前年份;第三步:连接它们。您的查询如下所示:

 class ViewPagerAdapter extends FragmentStatePagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return null==mFragmentList?0:mFragmentList.size();
    }

    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

请注意,我进行了查询,因此它将返回“Y-m-d”日期格式,如果您希望它为“m-d-Y”更改此

insert into appointment (pat_id, app_date, app_type) 
select pat_id, 
CONCAT(
   YEAR(NOW()), 
   "-", 
   DATE_FORMAT(STR_TO_DATE("10-26-2016","%m-%d-%Y"), "%m-%d")
), 
"PE")

到这个

CONCAT(
   YEAR(NOW()), 
   "-", 
   DATE_FORMAT(STR_TO_DATE("10-26-2016","%m-%d-%Y"), "%m-%d")
)