Extract Date Parts
extract_date_parts · dates · date, text
2026-09-23
กำลังประมวลผล…
extract_date_parts · dates · date, text
2026-09-23
การสรุปยอดรายเดือนหรือดูว่าวันไหนของสัปดาห์ขายดีที่สุด ต้องแยกส่วนของวันที่ออกมาเป็นคอลัมน์ก่อน เทคนิคนี้สร้างคอลัมน์ใหม่ตามส่วนที่เลือก โดยไม่แตะคอลัมน์วันที่เดิม
bucket_values จะตรงกว่าzone<prefix>_<part> ทีละส่วนตามที่เลือกใน partsweekday ใช้มาตรฐาน ISO คือจันทร์เท่ากับ 1 และอาทิตย์เท่ากับ 7buddhistEra เพื่อให้ปีเป็น พ.ศ. ซึ่งบวก 543 จากปี ค.ศ.| Parameter | Type | Default |
|---|---|---|
column | string | — |
parts | year | month | day | weekday | quarter | hour | minute | week[] | ["year","month"] |
prefix | string | — |
zone | string | "Asia/Bangkok" |
buddhistEra | boolean | false |
import json
from datetime import date, datetime
def extract_date_parts(value, buddhist_era=False):
if not isinstance(value, str):
return None
try:
moment = datetime.fromisoformat(value)
except ValueError:
return None
return {
'year': moment.year + (543 if buddhist_era else 0),
'month': moment.month,
'day': moment.day,
'weekday': moment.isoweekday(),
'quarter': (moment.month - 1) // 3 + 1,
}
values = ['2026-09-23', '2026-09-23T18:30:00', 'ไม่ใช่วันที่', None]
print(json.dumps([extract_date_parts(v) for v in values], ensure_ascii=False))
คอลัมน์ order_date พร้อมใช้แล้วหลังผ่าน normalize_date เลือก parts เป็น year, month และ weekday ตั้ง prefix เป็น order จะได้คอลัมน์ order_year, order_month และ order_weekday ถ้ารายงานภายในใช้ปี พ.ศ. ให้เปิด buddhistEra และตั้งชื่อ prefix ให้ชัดว่าเป็น พ.ศ. เพื่อไม่ให้สับสนภายหลัง
ใช้ normalize_date และ normalize_timezone ก่อนเสมอ และใช้ bucket_values เมื่อจะจัดกลุ่มตัวเลขที่ได้ เช่น จัดเดือนเป็นไตรมาสด้วยเกณฑ์ของตัวเอง