IN response to @Adrian, the following is taken directly from a running instance of our v2 release that uses a Postgres server:
comixed=# \d+ displayable_comics_view
View "public.displayable_comics_view"
Column | Type | Collation | Nullable | Default | Storage | Description
-----------------------+------------------------+-----------+----------+---------+----------+-------------
comic_book_id | bigint | | | | plain |
comic_detail_id | bigint | | | | plain |
archive_type | character varying(4) | | | | extended |
comic_state | character varying(64) | | | | extended |
is_unscraped | boolean | | | | plain |
comic_type | character varying(32) | | | | extended |
publisher | character varying(255) | | | | extended |
series | character varying(255) | | | | extended |
volume | character varying(4) | | | | extended |
issue_number | character varying(16) | | | | extended |
sortable_issue_number | text | | | | extended |
title | character varying(255) | | | | extended |
page_count | bigint | | | | plain |
cover_date | date | | | | plain |
month_published | integer | | | | plain |
year_published | integer | | | | plain |
store_date | date | | | | plain |
added_date | date | | | | plain |
View definition:
SELECT DISTINCT d.comic_book_id,
d.id AS comic_detail_id,
d.archive_type,
d.comic_state,
CASE
WHEN (EXISTS ( SELECT s.id,
s.comic_book_id,
s.metadata_source_id,
s.reference_id
FROM comic_metadata_sources s
WHERE s.comic_book_id = d.comic_book_id)) THEN false
ELSE true
END AS is_unscraped,
d.comic_type,
d.publisher,
d.series,
d.volume,
d.issue_number,
( SELECT "right"(concat('0000000000', d.issue_number), 10) AS "right") AS sortable_issue_number,
d.title,
( SELECT count(*) AS count
FROM comic_pages cp
WHERE cp.comic_book_id = d.comic_book_id) AS page_count,
d.cover_date,
CASE
WHEN d.cover_date IS NULL THEN 0
ELSE month(d.cover_date)
END AS month_published,
CASE
WHEN d.cover_date IS NULL THEN 0
ELSE year(d.cover_date)
END AS year_published,
d.store_date,
d.added_date
FROM comic_details d;
comixed=# select * from displayable_comics_view limit 5;
comic_book_id | comic_detail_id | archive_type | comic_state | is_unscraped | comic_type | publisher | series | volume | issue_number | sortable_issue_number | title | page_count | cover_date | month_published | year_published | store_date | added_date
---------------+-----------------+--------------+-------------+--------------+------------+-----------+--------------------------+--------+--------------+-----------------------+-----------------------------------+------------+------------+-----------------+----------------+------------+------------
34944 | 34944 | CBZ | STABLE | f | ISSUE | Ablaze | Lovecraft Unknown Kadath | 2022 | 1 | 0000000001 | Episode 1: Dylath-Leen | 36 | 2022-09-13 | 9 | 2022 | 2022-09-13 | 2025-03-08
34945 | 34945 | CBZ | STABLE | f | ISSUE | Ablaze | Lovecraft Unknown Kadath | 2022 | 2 | 0000000002 | Episode 2: Mount Ngranek | 35 | 2022-10-29 | 10 | 2022 | 2022-10-25 | 2025-03-08
34946 | 34946 | CBZ | STABLE | f | ISSUE | Ablaze | Lovecraft Unknown Kadath | 2022 | 3 | 0000000003 | Episode 3: In the Valley of Pnoth | 34 | 2022-11-24 | 11 | 2022 | 2022-11-22 | 2025-03-08
34947 | 34947 | CBZ | STABLE | f | ISSUE | Ablaze | Lovecraft Unknown Kadath | 2022 | 4 | 0000000004 | Episode 4: The Tower of Koth | 36 | 2022-12-15 | 12 | 2022 | 2022-12-13 | 2025-03-08
34948 | 34948 | CBZ | STABLE | f | ISSUE | Ablaze | Lovecraft Unknown Kadath | 2022 | 5 | 0000000005 | Episode 5: Celephais | 36 | 2023-01-23 | 1 | 2023 | 2023-01-24 | 2025-03-08
(5 rows)
If Postgres doesn't have a month() or year() method, then how do the above work?