如何用静态数字替换postgres中的日期

时间:2018-09-17 09:49:11

标签: sql postgresql postgresql-9.5

我正在编写一个Postgres过程,我想用一些静态编号仅替换date中的日期部分。

例如:-

varDate Date default '2018-05-21';

说我想将此日期定为'2018-05-08';

谁能告诉我如何实现这一目标。

直到现在我尝试过的是这个

varDate := varDate - interval '1 day' * 21 + interval '1 day' * 8;

上面的表达式给了我适当的结果。但是,是否有任何快捷方式可以仅更改日期的日期部分。

2 个答案:

答案 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'