我正在编写一个Postgres过程,我想用一些静态编号仅替换date中的日期部分。
例如:-
varDate Date default '2018-05-21';
说我想将此日期定为'2018-05-08';
谁能告诉我如何实现这一目标。
直到现在我尝试过的是这个
varDate := varDate - interval '1 day' * 21 + interval '1 day' * 8;
上面的表达式给了我适当的结果。但是,是否有任何快捷方式可以仅更改日期的日期部分。
答案 0 :(得分:3)
据我了解,您想将月份的日期更改为8。
一种方法是将日期“截断”到月初,然后添加8天:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, getResources()
.getStringArray(R.array.settingSpinner));
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
settings.setAdapter(adapter);
settings.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1,
int position, long id) {
Object item = arg0.getItemAtPosition(position);
Toast.makeText(getApplicationContext(),String.valueOf(item),Toast.LENGTH_SHORT).show();
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
vardate := date_trunc('month', vardate)::date + 8;
返回一个date_trunc
,这就是需要强制转换timestamp
的原因。
另一种选择是根据现有日期“构建”日期:
::date
答案 1 :(得分:0)
另一种选择是在日期前增加天数,以便您在第8天着陆:
select vardate::date + (8 - extract(day from vardate) * interval '1 day'