我想在pat_id
表中选择所有pat_date_hired
及其patient
,然后将其插入appointment
表。
pat_id
与pat_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的新手。我的知识非常有限。任何帮助将不胜感激。
答案 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")
)