用 Postgres 計算員工上下班紀錄

postgres

這應該算是一個蠻簡單的情境,公司都需要去紀錄每位員工上下班紀錄,或者是紀錄每天刷卡補助餐點,在一定的時間內刷卡才會進行公司補助,非在約定的時間點刷卡則不補助,底下看看公司可能會想要的表格紀錄。在後台頁面會進行時間區域的選擇。

起始日期: 2020-06-01 結束日期: 2020-06-30 早上時間: 08:00 ~ 09:00 晚上時間: 18:00 ~ 19:00

Continue reading “用 Postgres 計算員工上下班紀錄”

將 Postgres 資料轉換到 CSV 格式

postgres

時常用到 Postgres 轉換資料的功能,來即時協助 PM 了解目前使用者實際狀況,底下紀錄常用的指令。首先安裝 Postgres 環境,這邊其實就是用 Docker 方式來啟動一個全新的 Postgres DB。

  db:
    image: postgres:12
    restart: always
    volumes:
      - pg-data:/var/lib/postgresql/data
    logging:
      options:
        max-size: "100k"
        max-file: "3"
    environment:
      POSTGRES_USER: db
      POSTGRES_DB: db
      POSTGRES_PASSWORD: db

上面的 environment 參數可以自由調整,接著透過 docker-compose up -d 來啟動資料庫進行 App 串接。

Continue reading “將 Postgres 資料轉換到 CSV 格式”

[SQL] 如何從單一資料表取得每個 key 前 n 筆資料

postgres

最近專案需求需要實現單筆資料的版本控制,所以會有一張表 (foo) 專門儲存 key 資料,而有另外一張表 (bar) 專門存 Data 資料,那在 bar 這張表怎麼拿到全部 key 的最新版本資料?底下先看看 schema 範例

Continue reading “[SQL] 如何從單一資料表取得每個 key 前 n 筆資料”

在 PostgreSQL 時區轉換及計算時間

postgres

通常在使用資料表時,都會在每一筆紀錄上面寫入當下時間,而這個時間會根據目前系統所在的時區而有所不同,當然我們都會使用 UTC+0 作為標準時區,而欄位我們則會是使用 timestamp 或者是 unix time 格式,兩者最大的差異就是在前者 (timestamp) 會根據目前系統的時區來記錄,而後者 (unix time) 則是紀錄秒數差異 (Jan 01 1970) 而不會隨著系統時區改變而變化。如果是發展開源專案,則會使用後者居多,這樣不會因為使用者時區變化,而產生不同的差異,在 Gitea 開源專案保留了兩者,但是只要計算時間則是用 (unix time) 作轉換。

Continue reading “在 PostgreSQL 時區轉換及計算時間”

在 Docker 偵測 MySQL 或 Postgres 是否啟動

Screen Shot 2016-06-11 at 6.58.22 PM 監控 Service 是否存活也是 DevOps 重要的一環,此篇來紀錄在 Docker 內偵測 MySQLPostgres 是否已經啟動。在 Docker 自動測試內,其中一步就是建立 Database 環境,底下為測試步驟: Continue reading “在 Docker 偵測 MySQL 或 Postgres 是否啟動”