Date Functions
ฟังก์ชันวันที่ที่ต้องรู้
Section titled “ฟังก์ชันวันที่ที่ต้องรู้”Google Sheets มีฟังก์ชันวันที่มากมาย แต่มีไม่กี่ตัวที่ใช้บ่อยจริง ๆ ในงานประจำวัน
วันที่ปัจจุบัน: TODAY() & NOW()
Section titled “วันที่ปัจจุบัน: TODAY() & NOW()”=TODAY() → วันที่ปัจจุบัน (ไม่มีเวลา)=NOW() → วันที่และเวลาปัจจุบันแยกส่วนประกอบของวันที่
Section titled “แยกส่วนประกอบของวันที่”=YEAR(TODAY()) → 2026=MONTH(TODAY()) → 4=DAY(TODAY()) → 24=WEEKDAY(TODAY()) → 6 (ศุกร์ ถ้าเริ่มนับวันอาทิตย์=1)#include <stdio.h>#include <time.h>int main() { time_t now = time(NULL); struct tm *t = localtime(&now); printf("Year: %d, Month: %d, Day: %d\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday); return 0;}from datetime import datetoday = date.today()print(f"Year: {today.year}, Month: {today.month}, Day: {today.day}")print(f"Weekday: {today.strftime('%A')}")SELECT YEAR(CURDATE()) AS y, MONTH(CURDATE()) AS m, DAY(CURDATE()) AS d;คำนวณระยะห่างระหว่างวันที่: DATEDIF()
Section titled “คำนวณระยะห่างระหว่างวันที่: DATEDIF()”DATEDIF() เป็นฟังก์ชันลับที่ไม่แสดงใน Autocomplete แต่ใช้งานได้:
=DATEDIF(start_date, end_date, unit)| Unit | ความหมาย | ตัวอย่าง |
|---|---|---|
"Y" | จำนวนปีเต็ม | =DATEDIF("2000-01-15", TODAY(), "Y") → 26 |
"M" | จำนวนเดือนเต็ม | =DATEDIF("2000-01-15", TODAY(), "M") → 315 |
"D" | จำนวนวัน | =DATEDIF("2000-01-15", TODAY(), "D") → 9596 |
"YM" | เดือนที่เหลือ (ไม่นับปี) | ใช้กับ “Y” เพื่อแสดง “26 ปี 3 เดือน” |
"MD" | วันที่เหลือ (ไม่นับเดือน) | ใช้ต่อจาก “YM” |
ตัวอย่าง: คำนวณอายุแบบละเอียด
Section titled “ตัวอย่าง: คำนวณอายุแบบละเอียด”=DATEDIF(A1, TODAY(), "Y") & " ปี " & DATEDIF(A1, TODAY(), "YM") & " เดือน " & DATEDIF(A1, TODAY(), "MD") & " วัน"ผลลัพธ์: 26 ปี 3 เดือน 9 วัน
// C ไม่มีฟังก์ชัน DATEDIF โดยตรง ต้องคำนวณเอง#include <stdio.h>#include <time.h>int main() { struct tm start = {0}, end = {0}; start.tm_year = 2000-1900; start.tm_mon = 0; start.tm_mday = 15; end.tm_year = 2026-1900; end.tm_mon = 3; end.tm_mday = 24; double diff = difftime(mktime(&end), mktime(&start)); printf("Days: %.0f\n", diff / 86400); return 0;}from datetime import datestart = date(2000, 1, 15)today = date.today()delta = today - startprint(f"Days: {delta.days}")# สำหรับปี/เดือน ใช้ dateutil.relativedeltaSELECT DATEDIFF('2026-04-24', '2000-01-15') AS days, TIMESTAMPDIFF(YEAR, '2000-01-15', '2026-04-24') AS years;แปลงและจัดรูปแบบวันที่
Section titled “แปลงและจัดรูปแบบวันที่”DATEVALUE() — แปลงข้อความเป็นวันที่
Section titled “DATEVALUE() — แปลงข้อความเป็นวันที่”=DATEVALUE("2026-04-24") → Serial Number ของวันที่นั้น=DATEVALUE("April 24, 2026") → ทำงานเหมือนกันTEXT() — จัดรูปแบบวันที่เป็นข้อความ
Section titled “TEXT() — จัดรูปแบบวันที่เป็นข้อความ”=TEXT(TODAY(), "dd/mm/yyyy") → "24/04/2026"=TEXT(TODAY(), "d mmmm yyyy") → "24 April 2026"=TEXT(TODAY(), "ddd, dd mmm yy") → "Fri, 24 Apr 26"EDATE() & EOMONTH() — เลื่อนเดือน
Section titled “EDATE() & EOMONTH() — เลื่อนเดือน”=EDATE(TODAY(), 3) → วันเดียวกัน แต่อีก 3 เดือน=EDATE(TODAY(), -1) → เดือนที่แล้ว=EOMONTH(TODAY(), 0) → วันสุดท้ายของเดือนนี้=EOMONTH(TODAY(), 1) → วันสุดท้ายของเดือนหน้า#include <stdio.h>#include <time.h>int main() { time_t now = time(NULL); char buf[64]; strftime(buf, sizeof(buf), "%d/%m/%Y", localtime(&now)); printf("Formatted: %s\n", buf); return 0;}from datetime import date, timedeltafrom dateutil.relativedelta import relativedelta
today = date.today()print(today.strftime("%d/%m/%Y")) # 24/04/2026print(today + relativedelta(months=3)) # EDATE equivalentSELECT DATE_FORMAT(CURDATE(), '%d/%m/%Y') AS formatted, DATE_ADD(CURDATE(), INTERVAL 3 MONTH) AS plus_3m, LAST_DAY(CURDATE()) AS end_of_month;| ฟังก์ชัน | ใช้ทำอะไร |
|---|---|
TODAY() / NOW() | วันที่/เวลาปัจจุบัน |
YEAR(), MONTH(), DAY() | แยกส่วนประกอบ |
DATEDIF() | คำนวณระยะห่าง |
DATEVALUE() | แปลงข้อความเป็นวันที่ |
TEXT() | จัดรูปแบบวันที่เป็นข้อความ |
EDATE() / EOMONTH() | เลื่อนเดือน / หาวันสิ้นเดือน |