---
title: diff – หาผลต่างระหว่างสองวันที่
url: https://www.thepexcel.com/functions/n8n/date-time-functions/diff-n8n/
type: function-explainer
program: n8n
syntax: "{{ $json.date1.diff($json.date2, 'unit') }}"
date: 2025-12-16
updated: 2025-12-22
scores:
  popularity: 7
  difficulty: 4
  usefulness: 7
---

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

> diff() หาช่วงห่างระหว่าง DateTime object สองตัว โดย return Duration object ที่บอกจำนวนวัน ชั่วโมง นา

## คำอธิบาย

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

## Syntax

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

## Arguments

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

## เคสการใช้งาน

### Scenario 1

General usage

_เหมาะกับ:_ general

## ตัวอย่าง

### 1. ตัวอย่างที่ 1: หาผลต่างเป็นวัน (พื้นฐาน)

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

**ผลลัพธ์:** `7`

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

### 2. ตัวอย่างที่ 2: คำนวณเวลาที่ผ่านไปเป็นชั่วโมง

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

**ผลลัพธ์:** `5`

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

### 3. ตัวอย่างที่ 3: หาผลต่างแบบ Duration object (ไม่ระบุ unit)

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

**ผลลัพธ์:** `{"days": 7, "hours": 4, "minutes": 15, "seconds": 0}`

ไม่ระบุหน่วย 'unit' ในพารามิเตอร์ ผลลัพธ์จะเป็น Duration object ที่บอกผลต่างในหลายหน่วยเวลาพร้อมกัน
.
ได้ผลลัพธ์ว่า "ต่างกัน 7 วัน 4 ชั่วโมง 15 นาที" ซึ่งดูละเอียด และแสดง breakdown ของเวลาได้ 😎
.
ตัวอย่างนี้เจ๋งต่อ "เวลาส่งสินค้าต่างจากเวลาสั่งกี่วัน กี่ชั่วโมง" ได้เลย เอาจริงๆ นะครับ

### 4. ตัวอย่างที่ 4: คำนวณ SLA - อายุของ ticket (นาที)

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

**ผลลัพธ์:** `{
  ageMins: 180,
  ageHours: 3,
  isBreached: false
}`

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

### 5. ตัวอย่างที่ 5: คำนวณอายุสินค้า (วัน) และแจ้งเตือน

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

**ผลลัพธ์:** `{
  daysOld: 45,
  needsRestock: false
}`

ใช้ 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

## หมายเหตุเพิ่มเติม

- 💡 diff() return Duration object หรือตัวเลขขึ้นอยู่กับว่ารับ unit หรือไม่ ถ้าระบุ unit เช่น 'days' จะ return ตัวเลข ถ้าไม่ระบุ จะ return Duration object ที่มี properties หลายตัว

- .

- ⚠️ ต้องแปลง string เป็น DateTime ก่อนใช้ diff() ไม่สามารถใช้กับ string โดยตรง ผมเจอ error นี้บ่อยมากตอนเริ่มใช้งาน 😅

- .

- 💡 diff() return DateTime ใหม่ (immutable) ไม่ได้แก้ไข DateTime เดิม ส่วนตัวผมไม่เคยเจอปัญหานี้เพราะ diff() ส่วนใหญ่ใช้คำนวณเลย ไม่ต้อง save ค่า

- .

- ✨ สามารถใช้ diff() ใน IF condition ได้ เช่น IF $now.diff(createdAt, 'days') > 7 THEN send reminder ตัวอย่างเช่น ใช้สำหรับ auto-escalation ticket หรือ payment reminder ส่วนตัวผมใช้อย่างนี้บ่อยมากครับ 😎

- .

- 💡 ถ้าต้อง custom format ผล (เช่น "7 days, 4 hours, 15 minutes") ต้องไม่ระบุ unit คำนวณแบบ Duration object แล้ว access individual properties และ build string เองครับ ไม่มี built-in formatter ให้ 😅

## คำถามที่พบบ่อย

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

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

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

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

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

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

**Q: 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 💡

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

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

**Q: 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() 💡

**Q: 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 บ่อยสุด ครับ

## ฟังก์ชันที่เกี่ยวข้อง

- [plus – ฟังก์ชันบวกระยะเวลาเข้ากับวันที่](https://www.thepexcel.com/functions/n8n/date-time-functions/plus-n8n/)
- [minus – ลบระยะเวลาจาก DateTime](https://www.thepexcel.com/functions/n8n/date-time-functions/minus-n8n/)
- [toDateTime – แปลงข้อมูลเป็นวัตถุวันที่และเวลา](https://www.thepexcel.com/functions/n8n/type-functions/to-date-time-n8n/)
- [.format() – จัดรูปแบบค่าเป็นสตริงตามรูปแบบที่กำหนด](https://www.thepexcel.com/functions/n8n/math-functions/format-n8n/)

## แหล่งข้อมูลเพิ่มเติม

- [Date and time with Luxon | n8n Cookbook](https://docs.n8n.io/code/cookbook/luxon/) _(article)_
- [Date and time | n8n Docs](https://docs.n8n.io/code/builtin/date-time/) _(article)_
- [Luxon Duration API](https://moment.github.io/luxon/api-docs/index.html#duration) _(article)_
- [n8n Expressions Reference](https://docs.n8n.io/code/expressions/) _(article)_

---

_Source: [https://www.thepexcel.com/functions/n8n/date-time-functions/diff-n8n/](https://www.thepexcel.com/functions/n8n/date-time-functions/diff-n8n/)_
