查詢即時的新手,我想只提取月份和年份讓我怎麼做,我嘗試使用date_part數,但其只能提取一個月如何獲得單月和今年postgre
select
case when
date_part('day', now()) >=25 then date_part('month', now())
else date_part('month', now())-1 end
任何人都可以幫我
查詢即時的新手,我想只提取月份和年份讓我怎麼做,我嘗試使用date_part數,但其只能提取一個月如何獲得單月和今年postgre
select
case when
date_part('day', now()) >=25 then date_part('month', now())
else date_part('month', now())-1 end
任何人都可以幫我
您可以使用EXTRACT
函數從DATE
中提取月份,年份和日期。
以下是使用它可以實現您發佈的問題的查詢。
SELECT CASE
WHEN (extract(DAY
FROM CURRENT_DATE) >= 25) THEN (extract(MONTH
FROM CURRENT_DATE))
ELSE (extract(MONTH
FROM CURRENT_DATE) - 1)
END;
結果:
由於今天是本月的第12天,返回7(上月)。您可以檢查DEMO here
編輯:
如果你想提取的年月兩者單獨提取出來並連接它。 以下是更新後的查詢。
SELECT CASE
WHEN (extract(DAY
FROM CURRENT_DATE) >= 25) THEN (extract(MONTH
FROM CURRENT_DATE) || ', ' || extract(Year FROM CURRENT_DATE))
ELSE (extract(MONTH
FROM CURRENT_DATE) - 1 || ', ' || extract(Year FROM CURRENT_DATE))
END;
檢查演示here
謝謝你,先生:) – PinballWizard
您所查詢的完美。
請參閱this demo:
今天是2017-08-12
和查詢提供了8-1
= 7
預期
select
case when date_part('day', now()) >=25
then date_part('month', now())
else date_part('month', now())-1
end
;
| case |
|------|
| 7 |
另外兩個情況下工作太細:
select
case when date_part('day', date '2017-08-12') >=25
then date_part('month', date '2017-08-12')
else date_part('month', date '2017-08-12')-1
end
;
| case |
|------|
| 7 |
select
case when date_part('day', date '2017-08-26') >=25
then date_part('month', date '2017-08-26')
else date_part('month', date '2017-08-26')-1
end
;
| case |
|------|
| 8 |
我querry只顯示月份,如果我想提取月份和年份,我該怎麼做,先生? – PinballWizard
我真的不知道你想要的結果是什麼,但是要從日期中提取年/月/其他任何東西,你可以使用TO_CHAR函數。
例如:
select to_char(current_timestamp, 'YYYY'), to_char(current_timestamp, 'MONTH');
select to_char(current_timestamp, 'YYYY-MM');
要添加分鐘/小時/天/月/年的任何一個日期使用間隔操作就像這樣:
select to_char(now() + interval '1' month, 'YYYY-MM');
您可以添加許多間隔一次:
select to_char(now() + interval '1' month + interval '-1' year, 'YYYY-MM');
我上面的查詢結果只顯示月份,但我想顯示月份和年份還有sir – PinballWizard
您是否想在單列內使用一個月和一年?只需使用不同的模式:選擇to_char(current_timestamp,'YYYY-MM')或選擇to_char(current_timestamp,'YYYY-MONTH')。 –
是啊這就是即時通訊設法實現,但爲什麼不能從選擇to_char(now(),'day') - 1? – PinballWizard
試試這個,你可以通過使用獲得字符串中的數字表示:
select to_char(current_timestamp, 'YYYY') as Year, to_char(current_timestamp, 'MONTH') as Month;
編輯你的問題,並提供樣本數據,預期的效果,和*規格*什麼年份和月份。 –