PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

cách tạo bảng ngày tháng theo tiêu chuẩn ISO-8601 trong postgres

xem ví dụ dưới đây

SELECT mydate calendar_date
    ,EXTRACT(WEEK FROM mydate) week_num
    ,EXTRACT(month FROM mydate) month_num
    ,to_char(mydate,'Mon') month_name
    ,EXTRACT(Quarter FROM mydate) quarter_num
    ,EXTRACT(year FROM mydate) calendar_year
    ,EXTRACT(DOW FROM mydate) iso_dayofweek
    ,to_char(mydate, 'day') dayofweek_name
FROM (
    SELECT now()::DATE mydate
    ) t

Kết quả:

calendar_date week_num month_num month_name quarter_num calendar_year iso_dayofweek dayofweek_name 
------------- -------- --------- ---------- ----------- ------------- ------------- -------------- 
2015/04/24    17       4         Apr        2           2015          5             friday       

Bạn có thể sử dụng generate_series() để có tất cả các ngày trong năm cho ví dụ:2015

select generate_series(0,364) + date'1/1/2015'

này sẽ sản xuất ngày từ 1/1/2015 - 31/12/2015 và sử dụng select này thay vì SELECT now()::DATE trong ví dụ đã cho

Nếu bạn muốn tạo bảng cho năm 2015 thì bạn có thể sử dụng truy vấn sau

CREATE TABLE mycal_2015 AS
SELECT row_number() OVER () date_key
    ,mydate calendar_date
    ,EXTRACT(WEEK FROM mydate) week_num
    ,EXTRACT(month FROM mydate) month_num
    ,to_char(mydate,'Mon') month_name
    ,EXTRACT(Quarter FROM mydate) quarter_num
    ,EXTRACT(year FROM mydate) calendar_year
    ,EXTRACT(DOW FROM mydate) iso_dayofweek
    ,to_char(mydate, 'day') dayofweek_name
FROM (
    SELECT generate_series(0, 364) + DATE '1/1/2015' mydate
    ) t

và bảng sẽ giống như select * from mycal_2015

date_key calendar_date week_num month_num month_name quarter_num calendar_year iso_dayofweek dayofweek_name 
-------- ------------- -------- --------- ---------- ----------- ------------- ------------- -------------- 
1        2015/01/01    1        1         Jan        1           2015          4             thursday       
2        2015/01/02    1        1         Jan        1           2015          5             friday         
3        2015/01/03    1        1         Jan        1           2015          6             saturday       
4        2015/01/04    1        1         Jan        1           2015          0             sunday         
5        2015/01/05    2        1         Jan        1           2015          1             monday         
6        2015/01/06    2        1         Jan        1           2015          2             tuesday        
...
.
.
.
364      2015/12/30    53       12        Dec        4           2015          3             wednesday      
365      2015/12/31    53       12        Dec        4           2015          4             thursday       

POSTGRESQL:CHỨC NĂNG CHIẾT XUẤT

Hàm trích xuất PostgreSQL trích xuất các phần từ một ngày

Cú pháp:extract( unit from date )

date là giá trị ngày tháng, dấu thời gian, thời gian hoặc khoảng thời gian mà từ đó phần ngày tháng sẽ được trích xuất.

đơn vị là loại đơn vị của khoảng thời gian như ngày, tháng, phút, giờ, v.v.

Nó có thể là một trong những điều sau:

unit            description                                                                                                                   
--------------- ----------------------------------------------------------------------------------------------------------------------------- 
century             Uses the Gregorian calendar where the first century starts at '0001-01-01 00:00:00 AD'                                       
day                 Day of the month (1 to 31)                                                                                                   
decade              Year divided by 10                                                                                                           
dow                 Day of the week (0=Sunday, 1=Monday, 2=Tuesday, ... 6=Saturday)                                                              
doy                 Day of the year (1=first day of year, 365/366=last day of the year, depending if it is a leap year)                          
epoch               Number of seconds since '1970-01-01 00:00:00 UTC', if date value. Number of seconds in an interval, if interval value        
hour                Hour (0 to 23)                                                                                                               
isodow              Day of the week (1=Monday, 2=Tuesday, 3=Wednesday, ... 7=Sunday)                                                             
isoyear             ISO 8601 year value (where the year begins on the Monday of the week that contains January 4th)                              
microseconds        Seconds (and fractional seconds) multiplied by 1,000,000                                                                     
millennium          Millennium value                                                                                                             
milliseconds        Seconds (and fractional seconds) multiplied by 1,000                                                                         
minute              Minute (0 to 59)                                                                                                             
month               Number for the month (1 to 12), if date value. Number of months (0 to 11), if interval value                                 
quarter             Quarter (1 to 4)                                                                                                             
second              Seconds (and fractional seconds)                                                                                             
timezone            Time zone offset from UTC, expressed in seconds                                                                              
timezone_hour       Hour portion of the time zone offset from UTC                                                                                
timezone_minute     Minute portion of the time zone offset from UTC                                                                              
week                Number of the week of the year based on ISO 8601 (where the year begins on the Monday of the week that contains January 4th) 
year                Year as 4-digits                                                                                                             

Lưu ý:Chức năng giải nén được áp dụng cho PostgreSQL phiên bản 8.4 trở lên

Hàm ngày / giờ và toán tử
create_series ()




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách giảm thiểu RPO cho cơ sở dữ liệu PostgreSQL của bạn bằng cách sử dụng phục hồi tại thời điểm

  2. 3 cách để kiểm tra kiểu dữ liệu của cột trong PostgreSQL

  3. Đặt lại khóa chính PostgreSQL thành 1

  4. Làm cách nào để khôi phục một bảng từ bản sao lưu .sql postgresql?

  5. SQL - Tạo chế độ xem từ nhiều bảng