2016-10-24 6 views
0
elseif (p_period = 'LAST2CALENDARMONTHS') then 
     lMonthInt := 2; 

     lLastDay := date_trunc('month',current_date - interval '1 month') + INTERVAL '1 month - 1 day' + (interval '1 day - 1 second'); 
     lFirstDay := date_trunc('month',current_date - (lMonthInt*INTERVAL '1 month')); 

    elseif (p_period = 'LAST3CALENDARMONTHS') then 
     lMonthInt := 3; 

     lLastDay := date_trunc('month',current_date - interval '1 month') + INTERVAL '1 month - 1 day'+ (interval '1 day - 1 second'); 
     lFirstDay := date_trunc('month',current_date - (lMonthInt*INTERVAL '1 month')); 

は、上記のコードは、例えば、FROMDATEおよびTODATEに文字列を変換文字列からタイムスタンプ: 「2016-08- 01〇時00" 分00秒 TODATE: 『2016年9月30日夜11時59分59秒』Postgresqlの:私は<strong>LAST2CALENDARMONTHSそれが表示され</p> <p></strong>を FROMDATE呼び出すときPostgreSQLの使用

私は1月を結果SH呼び出すたとえば、年の任意の月を呼び出すために同じことをやりたいですことウルド:

FROMDATE: "2016年1月1日0時00分○○秒" TODATE: "2016年1月31日午後11時59分59秒"

はこの可能のようなものですか?

答えて

2

現在の年の使用中の1月の最初と最後の日を取得するには、次のPostgreSQL 9.3およびそれ以前については

elseif (p_period = 'JANUARY') then 
    lFirstDay := make_timestamp(date_part('year', current_date)::int, 1, 1, 0, 0, 0); 
    lLastDay := lFirstDay + interval '1 month' - interval '1 second'; 

make_timestampが存在しない場合、あなたが取得する

SELECT date_trunc('year', current_timestamp) + '0 months' 

を使用することができます1月の初日。

+0

私は今、これを取得: –

+0

ERROR:関数make_timestamp(整数、整数、整数、整数、整数、整数) LINE 1が存在しません:SELECT make_timestamp(date_partで( '年'、CURRENT_DATE):: int型.. –

+0

@Charlvanderbyl - Postgresのバージョン番号(歴史的な場合)を指定してください。ありがとうLaurenz。 – klin

関連する問題

 関連する問題