Python 與 SQL 日期時間轉換處理
在做資料清洗和轉換時,時常會需要進行日期時間的清洗和轉換,用來篩選特定時間的資料或統一格式。
在 Python,可以透過 datetime 物件的 strptime 和 strftime 函數來實現,而在 PostgreSQL 中則可以利用內建的日期函數和格式化工具達成。
本教學將介紹如何分別使用 Python 和 PostgreSQL 處理日期的各種轉換操作,包括今天日期、昨天日期與上個月的格式化處理。
Python 範例#
以下使用 datetime
模組來完成日期轉換:
from datetime import datetime, timedelta
# 1. 得到今天日期,格式(yyyymmdd),型態 date
today_date = datetime.today().date()
print("今天日期 (date):", today_date)
# 2. 將今天日期轉為字串
today_str = today_date.strftime('%Y%m%d')
print("今天日期 (字串):", today_str)
# 3. 取得昨天日期,型態 date
yesterday_date = today_date - timedelta(days=1)
print("昨天日期 (date):", yesterday_date)
# 4. 將昨天日期轉為字串
yesterday_str = yesterday_date.strftime('%Y%m%d')
print("昨天日期 (字串):", yesterday_str)
# 5. 取得上個月,格式(yyyymm),型態字串
last_month = (today_date.replace(day=1) - timedelta(days=1)).strftime('%Y%m')
print("上個月 (字串):", last_month)
輸出範例:#
今天日期 (date): 2024-12-08
今天日期 (字串): 20241208
昨天日期 (date): 2024-12-07
昨天日期 (字串): 20241207
上個月 (字串): 202411
PostgreSQL 範例#
在 PostgreSQL 中,可以使用 SQL 查詢進行類似的日期操作:
-- 1. 得到今天日期,格式(yyyymmdd),型態 date
SELECT CURRENT_DATE AS today_date;
-- 2. 將今天日期轉為字串
SELECT TO_CHAR(CURRENT_DATE, 'YYYYMMDD') AS today_str;
-- 3. 取得昨天日期,型態 date
SELECT CURRENT_DATE - INTERVAL '1 day' AS yesterday_date;
-- 4. 將昨天日期轉為字串
SELECT TO_CHAR(CURRENT_DATE - INTERVAL '1 day', 'YYYYMMDD') AS yesterday_str;
-- 5. 取得上個月,格式(yyyymm),型態字串
SELECT TO_CHAR((CURRENT_DATE - INTERVAL '1 month')::DATE, 'YYYYMM') AS last_month;
執行範例結果:#
today_date | today_str | yesterday_date | yesterday_str | last_month |
---|---|---|---|---|
2024-12-08 | 20241208 | 2024-12-07 | 20241207 | 202411 |
小結#
-
Python 提供了靈活的
datetime
模組,可以用程式控制日期計算與格式化。 -
PostgreSQL 提供內建的日期函數與格式化工具,方便進行資料庫中的日期處理。
透過這兩種方式,開發者可以輕鬆地處理日期資料,並應用於不同的系統需求。
Read other posts