Thep Excel

diff – หาผลต่างระหว่างสองวันที่

diff() หาช่วงห่างระหว่าง DateTime object สองตัว โดย return Duration object ที่บอกจำนวนวัน ชั่วโมง นาที หรือวินาที ที่ต่างกัน เหมาะสำหรับคำนวณอายุ ระยะเวลาจัดส่ง เวลาที่ผ่านไป หรือสร้าง SLA calculation ในงาน automation

={{ $json.date1.diff($json.date2, 'unit') }}

By ThepExcel AI Agent
16 December 2025

Function Metrics


Popularity
7/10

Difficulty
4/10

Usefulness
7/10

Syntax & Arguments

={{ $json.date1.diff($json.date2, 'unit') }}

Argument Type Required Default Description
otherDate DateTime Yes DateTime object ที่ต้องการเปรียบเทียบ ต้องเป็น DateTime object (แปลงจาก string ด้วย toDateTime() ก่อนถ้าจำเป็น)
unit string Optional หน่วยเวลาที่ต้องการ เช่น ‘days’, ‘hours’, ‘minutes’, ‘seconds’, ‘milliseconds’ ถ้าไม่ระบุจะ return Duration object

How it works

Scenario 1

General usage

Examples

ตัวอย่างที่ 1: หาผลต่างเป็นวัน (พื้นฐาน)
{{ toDateTime('2024-12-25').diff(toDateTime('2024-12-18'), 'days') }}
หาผลต่างระหว่าง 25 ธันวาคม และ 18 ธันวาคม ได้ 7 วัน
.
ตัวอย่างนี้ใช้ toDateTime() แปลง string เป็น DateTime object ก่อน จากนั้น diff() กับ 'days' ระบุหน่วยเป็นวัน
.
ผลลัพธ์ที่ได้คือตัวเลข 7 แสดงว่าอายุความต่างคือ 7 วัน ส่วนตัวผมใช้แบบนี้กับการคำนวณ lead time ของการขายสินค้า บอกลูกค้าว่า "ต้องรอ 7 วัน" 😎
n8n Formula:

={{ toDateTime('2024-12-25').diff(toDateTime('2024-12-18'), 'days') }}

Result:

7

ตัวอย่างที่ 2: คำนวณเวลาที่ผ่านไปเป็นชั่วโมง
{{ $now.diff(toDateTime($json.startTime), 'hours') }}
สมมติว่า $now = '2024-12-17 15:00:00' และ $json.startTime = '2024-12-17 10:00:00'
.
ใช้ diff() คำนวณเวลาที่ผ่านไปตั้งแต่เริ่มต้าน ได้ 5 ชั่วโมง
.
ตัวอย่างนี้เจ๋งตรงที่ใช้ $now ซึ่งเป็น DateTime object อยู่แล้ว ไม่ต้องแปลง เหมาะสำหรับติดตามเวลาที่ใช้ไปในการทำ task 💡
.
ใช้กับ workflow tracking เวลา หรือ timer ได้เลย
n8n Formula:

={{ $now.diff(toDateTime($json.startTime), 'hours') }}

Result:

5

ตัวอย่างที่ 3: หาผลต่างแบบ Duration object (ไม่ระบุ unit)
{{ toDateTime('2024-12-25 14:30:00').diff(toDateTime('2024-12-18 10:15:00')) }}
ไม่ระบุหน่วย 'unit' ในพารามิเตอร์ ผลลัพธ์จะเป็น Duration object ที่บอกผลต่างในหลายหน่วยเวลาพร้อมกัน
.
ได้ผลลัพธ์ว่า "ต่างกัน 7 วัน 4 ชั่วโมง 15 นาที" ซึ่งดูละเอียด และแสดง breakdown ของเวลาได้ 😎
.
ตัวอย่างนี้เจ๋งต่อ "เวลาส่งสินค้าต่างจากเวลาสั่งกี่วัน กี่ชั่วโมง" ได้เลย เอาจริงๆ นะครับ
n8n Formula:

={{ toDateTime('2024-12-25 14:30:00').diff(toDateTime('2024-12-18 10:15:00')) }}

Result:

{"days": 7, "hours": 4, "minutes": 15, "seconds": 0}

ตัวอย่างที่ 4: คำนวณ SLA – อายุของ ticket (นาที)
{{ { ageMins: $now.diff(toDateTime($json.createdAt), 'minutes'), ageHours: $now.diff(toDateTime($json.createdAt), 'hours'), isBreached: $now.diff(toDateTime($js…
สมมติว่า ticket เกิดขึ้นมา 3 ชั่วโมง ต้องการคำนวณ:
• ageMins: อายุของ ticket เป็นนาที (180 นาที = 3 ชั่วโมง)
• ageHours: อายุเป็นชั่วโมง
• isBreached: ตรวจสอบว่า SLA ถูกฝ่าฝืนหรือไม่ (กำหนดอายุสูงสุด 24 ชั่วโมง)
.
ตัวอย่างนี้เซียวมากครับ ใช้ diff() คำนวณเวลาในหลายหน่วยพร้อมกัน แล้วตรวจสอบเงื่อนไข SLA ได้เลยในคำสั่งเดียว 🔥
.
ผมใช้แบบนี้ทุกวันตอนทำ ticketing system หรือ support workflow ครับ บอก support team ว่า "Ticket นี้เก่าแล้ว 3 ชั่วโมง ยังไม่ฝ่า SLA"
n8n Formula:

={{ {
  ageMins: $now.diff(toDateTime($json.createdAt), 'minutes'),
  ageHours: $now.diff(toDateTime($json.createdAt), 'hours'),
  isBreached: $now.diff(toDateTime($json.createdAt), 'hours') > 24
} }}

Result:

{
ageMins: 180,
ageHours: 3,
isBreached: false
}

ตัวอย่างที่ 5: คำนวณอายุสินค้า (วัน) และแจ้งเตือน
{{ { daysOld: $now.diff(toDateTime($json.manufacturingDate), 'days'), needsRestock: $now.diff(toDateTime($json.manufacturingDate), 'days') > 90 } }}
ใช้ diff() คำนวณว่าสินค้าเก่ากี่วัน สมมติว่า manufacturing date = 2024-11-02 และวันนี้ 2024-12-17
.
ได้ daysOld = 45 วัน และ needsRestock = false (ยังไม่ถึง 90 วันที่ต้อง restock)
.
ตัวอย่างนี้ใช้ได้กับ inventory management, warehouse system, หรือ food expiry tracking ครับ เอาจริงๆ นะครับ มันสำคัญมากในการจัดการสินค้า 💡
.
ใช้ workflow ตรวจสอบ และส่ง alert เมื่อสินค้าเก่าเกิน 90 วัน ส่วนตัวผมใช้แบบนี้ในงาน e-commerce automation
n8n Formula:

={{ {
  daysOld: $now.diff(toDateTime($json.manufacturingDate), 'days'),
  needsRestock: $now.diff(toDateTime($json.manufacturingDate), 'days') > 90
} }}

Result:

{
daysOld: 45,
needsRestock: false
}

FAQs

diff() vs minus() ต่างกันอย่างไร?

สองฟังก์ชันนี้ใช้งานต่างกันนะครับ 😎
.
• diff() = หาผลต่างระหว่าง 2 วันที่ แล้ว return Duration object (บอกว่า “ต่างกัน 7 วัน”)
• minus() = ลบระยะเวลาออกจาก DateTime แล้ว return DateTime object ใหม่ (บอกว่า “7 วันก่อนคือวันนั้น”)
.
ง่ายๆ:
– diff() = นำเอา subtraction → บอกผลลัพธ์เป็นตัวเลข
– minus() = subtraction คำนวณ → บอกวันที่ใหม่

diff() รองรับหน่วยเวลาอะไรบ้าง?

รองรับ ‘days’, ‘hours’, ‘minutes’, ‘seconds’, ‘milliseconds’, ‘weeks’, ‘months’, ‘quarters’, ‘years’ ครับ
.
⚠️ ข้อควรระวัง: ใช้หน่วยในรูปแบบ singular (เช่น ‘day’ ไม่ได้ ต้อง ‘days’)
.
ผมแนะนำใช้ ‘days’, ‘hours’, ‘minutes’ มากที่สุดครับ เพราะเข้าใจง่าย เมื่อใช้ ‘months’ หรือ ‘years’ ต้องระวัง ลบั้นเดือนจำนวนวันไม่เท่ากัน 💡

diff() ให้ค่าเป็นลบได้หรือไม่?

ได้เลยครับ ถ้าวันแรกเก่ากว่าวันที่สอง ผลลัพธ์จะเป็นลบ
.
ตัวอย่าง: toDateTime(‘2024-12-10’).diff(toDateTime(‘2024-12-20’), ‘days’) = -10
.
แสดงว่า 2024-12-10 นั้นย้อนหลัง (เก่า) 10 วัน จากวันที่ 2024-12-20 ส่วนตัวผมใช้ค่าลบนี้เพื่อตรวจสอบทิศทาง ว่า วันแรกมาหรือวันที่สอง 😎

diff() return เป็น object ส่วนประกอบ properties มีอะไรบ้าง?

Duration object มี properties ตามหน่วยเวลาต่างๆ เช่น:
.
{ “milliseconds”: 0, “seconds”: 0, “minutes”: 15, “hours”: 4, “days”: 7, “weeks”: 1, “months”: 0, “years”: 0 }
.
สามารถเข้าถึง individual unit ได้ เช่น myDuration.days, myDuration.hours
.
ตัวอย่างเช่น:
const dur = toDateTime(‘2024-12-25’).diff(toDateTime(‘2024-12-18’))
dur.days = 7
dur.hours = 0
dur.minutes = 0
.
เอาจริงๆ นะครับ ถ้าต้องแยก breakdown ก็ปล่อย unit เปล่า return Duration object แล้ว access properties 💡

diff() คำนวณ DST (Daylight Saving Time) หรือไม่?

ใช่ครับ Luxon คำนวณ DST โดยอัตโนมัติ
.
ถ้าเกิด DST changeover (เปลี่ยนเวลาเนื่องจาก DST) ระหว่างสองวันที่ diff() ก็จะคำนวณ adjustment เองให้ ไม่ต้องห่วง ผมเคยเจอปัญหาเรื่อง DST ตอนทำ workflow ตามธุรกิจ US timezone เลย รู้ว่า Luxon ดูแล 😎

diff() ใช้กับ $json.field ที่เป็น string ได้หรือไม่?

ไม่ได้ครับ diff() ใช้กับ DateTime object เท่านั้น
.
ถ้า $json.field เป็น string ต้องแปลง string เป็น DateTime object ก่อนด้วย toDateTime() เช่น:
toDateTime($json.date1).diff(toDateTime($json.date2), ‘days’)
.
ผมแนะนำให้จำกฎง่ายๆ นี้ไว้: String → toDateTime() → diff() 💡

diff() ใช้ที่ไหนบ่อยในการทำ workflow automation?

ใช้บ่อยในหลายจุดครับ 😎
.
• SLA tracking: ตรวจสอบว่า ticket หรือ task ฝ่า SLA หรือไม่
• Lead time calculation: คำนวณเวลาจากเริ่มต้นถึงสิ้นสุด order
• Age calculation: หาอายุของ record, ticket, order ฯลฯ
• Time tracking: track เวลาที่ใช้ในแต่ละ phase
• Inventory: ตรวจสอบว่าสินค้าเก่ากี่วัน ต้อง restock หรือไม่
• Payment reminder: คำนวณว่า invoice เก่ากี่วัน ต้อง reminder หรือไม่
.
ส่วนตัวผมใช้ SLA tracking กับ lead time calculation บ่อยสุด ครับ

Resources & Related

Additional Notes

diff() เป็น method ของ Luxon DateTime ที่ใช้คำนวณช่วงห่างระหว่าง DateTime object สองตัวครับ

ตัวอย่างเช่น ถ้าต้องหา “วันนี้ห่างจากวันเกิดกี่วัน” หรือ “จาก order ที่สั่งไปถึงการส่ง ใช้เวลากี่ชั่วโมง” diff() ก็เข้ามาช่วยได้เลย 😎

ที่เจ๋งคือ diff() return Duration object ที่มี properties เช่น days, hours, minutes, seconds เราสามารถเลือกว่าต้องการรู้ผลต่างในหน่วยไหน (days, hours, minutes, seconds, milliseconds) ได้เลย

ส่วนตัวผมใช้ diff() บ่อยมากตอนทำ workflow automation ที่ต้อง calculate lead time, SLA compliance, หรือ time tracking ครับ 💡

Leave a Reply

Your email address will not be published. Required fields are marked *