ความแตกต่างของเดือนระหว่างวันที่ใน MySQL


86

ฉันต้องการคำนวณจำนวนเดือนระหว่างช่องวันที่ 2 ช่อง

มีวิธีที่ดีกว่าการใช้การประทับเวลาแบบยูนิกซ์และการหารด้วย 2602,000 (วินาที) และการปัดเศษใน MySQL หรือไม่?

คำตอบ:


16

DATEDIFFฟังก์ชั่นสามารถให้จำนวนวันระหว่างวันที่สองวัน ข้อใดถูกต้องกว่าเนื่องจาก ... คุณกำหนดเดือนได้อย่างไร? (28, 29, 30 หรือ 31 วัน?)


68
PERIODDIFFสามารถคำนวณจำนวนเดือนได้อย่างแม่นยำ
Max Caceres

10
"ถูกต้องมากขึ้น" เป็นเรื่องที่น่าเหลือเชื่อเมื่อพูดถึงวันที่ ตัวอย่างเช่นหากคุณอยู่ในธุรกิจที่มีรอบเดือนที่ต้องการทราบว่าระหว่างวันที่สองวันมีกี่เดือนอาจมีความสำคัญมากกว่าจำนวนวันด้วยเหตุผลที่คุณวางไว้ข้างต้น เดือนนึงนานแค่ไหน? ถ้าฉันต้องการการนับเดือนฉันจะหารด้วย 30 ไม่ได้
Thomas Paine

6
นี่ไม่ใช่คำตอบที่ถูกต้อง คุณควรทำเครื่องหมายคำตอบของ Max ว่าถูกต้องด้านล่าง
Graham Charles

1
คำตอบของ Max ไม่ถูกต้องหากคุณต้องการจำนวนเดือนทั้งเดือนการบัญชีอย่างถูกต้องสำหรับปีอธิกสุรทินและจำนวนวันที่ต่างกันในหนึ่งเดือน PERIODDIFFเพียงแค่ใช้ค่า YYYYMM ดังนั้นหากคุณไม่คิดจำนวนวันด้วยตัวเองก่อนที่คุณจะส่งค่า YYYYMM สิ่งที่คุณกำลังคำนวณคือจำนวนเดือนปัดเศษเป็นเดือนที่ใกล้ที่สุดหากมีจำนวนเดือนน้อยกว่าจำนวนเต็ม ดูคำตอบของ Zane ด้านล่าง
rgvcorley

2
เหตุใดจึงมีการโหวตเพิ่มคะแนนPERIODDIFFความคิดเห็นจำนวนมาก Perioddiff ไม่ใช้ค่าวันดังนั้นคุณกำลังคำนวณจำนวนเดือนที่ปัดเศษขึ้นเป็นเดือนที่ใกล้ที่สุดหากมีจำนวนเดือนน้อยกว่าทั้งหมด
rgvcorley

220

ความแตกต่างของเดือนระหว่างสองวันที่ระบุ:

ฉันแปลกใจที่ยังไม่ได้พูดถึง:

ดูที่ฟังก์ชันTIMESTAMPDIFF ()ใน MySQL

สิ่งที่ช่วยให้คุณทำได้คือส่งผ่านสองค่าTIMESTAMPหรือDATETIME(หรือแม้กระทั่งDATEเมื่อ MySQL จะแปลงอัตโนมัติ) รวมถึงหน่วยเวลาที่คุณต้องการอิงตามความแตกต่างของคุณ

คุณสามารถระบุMONTHเป็นหน่วยในพารามิเตอร์แรก:

SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04')
-- Outputs: 0

SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-05')
-- Outputs: 1

SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-15')
-- Outputs: 1

SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-12-16')
-- Outputs: 7

โดยทั่วไปจะได้รับจำนวนเดือนที่ผ่านไปนับจากวันแรกในรายการพารามิเตอร์ โซลูชันนี้จะชดเชยจำนวนวันที่แตกต่างกันโดยอัตโนมัติในแต่ละเดือน (28,30,31) รวมทั้งคำนึงถึงปีอธิกสุรทินคุณไม่ต้องกังวลเกี่ยวกับสิ่งนั้น


ความแตกต่างของเดือนด้วยความแม่นยำ:

จะซับซ้อนกว่าเล็กน้อยหากคุณต้องการเพิ่มความแม่นยำของทศนิยมในจำนวนเดือนที่ผ่านไป แต่คุณสามารถทำได้ดังนี้

SELECT 
  TIMESTAMPDIFF(MONTH, startdate, enddate) +
  DATEDIFF(
    enddate,
    startdate + INTERVAL
      TIMESTAMPDIFF(MONTH, startdate, enddate)
    MONTH
  ) /
  DATEDIFF(
    startdate + INTERVAL
      TIMESTAMPDIFF(MONTH, startdate, enddate) + 1
    MONTH,
    startdate + INTERVAL
      TIMESTAMPDIFF(MONTH, startdate, enddate)
    MONTH
  )

พารามิเตอร์วันที่ของคุณอยู่ที่ไหนstartdateและอยู่ที่ไหนenddateไม่ว่าจะมาจากคอลัมน์วันที่สองคอลัมน์ในตารางหรือเป็นพารามิเตอร์อินพุตจากสคริปต์:

ตัวอย่าง:

With startdate = '2012-05-05' AND enddate = '2012-05-27':
-- Outputs: 0.7097

With startdate = '2012-05-05' AND enddate = '2012-06-13':
-- Outputs: 1.2667

With startdate = '2012-02-27' AND enddate = '2012-06-02':
-- Outputs: 3.1935

8
นี่คือคำตอบที่ถูกPERIODDIFF
ต้องการโหวตเพิ่มคะแนน

5
ขอบคุณในกรณีของฉันฉันต้องการวันที่รวมดังนั้นฉันจึงแทนที่ "enddate" ทั้งหมดด้วย "date_add (enddate, interval 1 day)" จากนั้น 2014-03-01 ถึง 2014-05-31 จะให้ 3.00 แทนที่จะเป็น 2.97
Sven Tore

2
ขอบคุณมาก ..... ขอขอบคุณพิเศษสำหรับ "ความแตกต่างของเดือนด้วยความแม่นยำ:" คุณคือดาราแห่ง mysql
Vidhi

1
ตกลง นี่คือคำตอบที่ถูกต้อง สิ่งที่ฉันกำลังมองหา! ขอบคุณ.
Jon Vote

105

PERIOD_DIFFคำนวณเดือนระหว่างวันที่สองวัน

ตัวอย่างเช่นในการคำนวณความแตกต่างระหว่าง now () และคอลัมน์เวลาใน your_table:

select period_diff(date_format(now(), '%Y%m'), date_format(time, '%Y%m')) as months from your_table;

1
มีความคิดอย่างไรเมื่อมันอาจเป็น 11 เดือน 1 วันดังนั้น 12 เดือน แต่ถ้าคุณเปลี่ยนเป็น 30 วันเดือนมันจะยังคงเป็น 11?
Darryl Hein

1
11 เดือน 1 วันจะคืน 11 เดือนตามตัวอย่างด้านบน PERIOD_DIFF ไม่รู้สึกถึง 30 เทียบกับ 31 วันเดือน
Max Caceres

27

ฉันใช้PERIODDIFFด้วย ในการรับปีและเดือนของวันที่ฉันใช้ฟังก์ชัน EXTRACT :

  SELECT PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM NOW()), EXTRACT(YEAR_MONTH FROM time)) AS months FROM your_table;

2
เหลือเชื่อ! ใช้เวลาน้อยลง 50% DATE_FORMATขอบคุณ! +1
David Rodrigues

1
ที่นี่สำหรับการประทับเวลา Unix SELECT PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM NOW()), EXTRACT(YEAR_MONTH FROM FROM_UNIXTIME(time, "%Y%m%d"))) AS months FROM your_table;
Smolla

2
สิ่งนี้ไม่ถูกต้องPERIOD_DIFFไม่ใช้ค่าวันดังนั้นคุณกำลังคำนวณจำนวนเดือนที่ปัดเศษเป็นเดือนที่ใกล้ที่สุดหากมีจำนวนเดือนน้อยกว่าจำนวนเต็ม คุณควรแก้ไขคำตอบของคุณเพื่อให้ชัดเจน
rgvcorley

12

จากคำตอบหลาย ๆ คำตอบคำตอบที่ 'ถูกต้อง' ขึ้นอยู่กับสิ่งที่คุณต้องการ ในกรณีของฉันฉันต้องปัดเศษเป็นจำนวนเต็มที่ใกล้เคียงที่สุด

ลองพิจารณาตัวอย่างเหล่านี้ 1 มกราคม -> 31 มกราคม: เป็น 0 ทั้งเดือนและยาวเกือบ 1 เดือน 1 มกราคม -> 1 กุมภาพันธ์? เป็นเวลา 1 เดือนเต็มและยาว 1 เดือน

ในการรับจำนวนเดือนทั้งหมด (สมบูรณ์)ให้ใช้:

SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-01-31');  => 0
SELECT TIMESTAMPDIFF(MONTH, '2018-01-01', '2018-02-01');  => 1

หากต้องการรับระยะเวลาที่ปัดเศษเป็นเดือนคุณสามารถใช้:

SELECT ROUND(TIMESTAMPDIFF(DAY, '2018-01-01', '2018-01-31')*12/365.24); => 1
SELECT ROUND(TIMESTAMPDIFF(DAY, '2018-01-01', '2018-01-31')*12/365.24); => 1

ค่านี้มีความแม่นยำถึง +/- 5 วันและสำหรับช่วงมากกว่า 1,000 ปี คำตอบของ Zane นั้นแม่นยำกว่าอย่างเห็นได้ชัด แต่มันเกินไปสำหรับความชอบของฉัน


ฉันไม่เห็นด้วย ... เลือก TIMESTAMPDIFF (MONTH, '2018-01-31', '2018-02-04'); ให้คุณห่างกัน 0 เดือน ... เลือก TIMESTAMPDIFF (MONTH, '2018-01-31', '2018-03-01'); ให้คุณ 1 ... ถ้า 5 วันเป็น 0 29 วันเท่ากับ 1?
Scott

@Scott มีเวลาหนึ่งเดือน (เรียกว่าเดือนกุมภาพันธ์) ระหว่างเดือนมกราคมถึงเดือนมีนาคม TIMESTAMPDIFF ให้จำนวนเดือนที่สมบูรณ์ระหว่างวันที่ หากคุณต้องการให้ช่วงเวลาขนาดเดือนใด ๆ เท่ากับหนึ่งเดือนให้ใช้เวอร์ชันที่ปัดเศษที่ฉันให้ไว้
IanS

8

จากคู่มือ MySQL:

PERIOD_DIFF (P1, P2)

ส่งคืนจำนวนเดือนระหว่างช่วงเวลา P1 และ P2 P1 และ P2 ควรอยู่ในรูปแบบ YYMM หรือ YYYYMM สังเกตว่าอาร์กิวเมนต์ช่วงเวลา P1 และ P2 ไม่ใช่ค่าวันที่

mysql> เลือก PERIOD_DIFF (200802,200703); -> 11

ดังนั้นอาจเป็นไปได้ที่จะทำสิ่งนี้:

Select period_diff(concat(year(d1),if(month(d1)<10,'0',''),month(d1)), concat(year(d2),if(month(d2)<10,'0',''),month(d2))) as months from your_table;

โดยที่ d1 และ d2 เป็นนิพจน์วันที่

ฉันต้องใช้คำสั่ง if () เพื่อให้แน่ใจว่าเดือนนั้นเป็นตัวเลขสองหลักเช่น 02 แทนที่จะเป็น 2


8

ฉันชอบวิธีนี้เพราะ evryone จะเข้าใจอย่างชัดเจนในแวบแรก:

SELECT
    12 * (YEAR(to) - YEAR(from)) + (MONTH(to) - MONTH(from)) AS months
FROM
    tab;

Stanislav - วิธีนี้ถูกต้องหากคุณต้องการทราบข้อมูลตามหมายเลขเดือน ฉันมีรายงานบางฉบับที่แสดงยอดขายตามเดือน (ม.ค. / ก.พ. / มี.ค. ฯลฯ ) แต่มีข้อมูลมากมาย (แผนภูมิตามไตรมาส / ปี / ปีที่ผ่านมา ฯลฯ ) ซึ่งฉันไม่สามารถจัดกลุ่มตามสิ่งใดได้เลย ฉันจำเป็นต้องดึงข้อมูลดิบและวนซ้ำ - เมื่อมันเป็น 1/31 การคำนวณจำนวนมากจะใส่ "เดือนหน้า" ในเดือนมีนาคมเมื่อมนุษย์เรารู้ว่ามันคือกุมภาพันธ์ถ้าเป็น 2/4 การคำนวณบางอย่างบอกว่า 1/31 คือ "เดือนนี้" แต่ 1/28 คือ "เดือนที่แล้ว"
Scott

6

มีวิธีที่ดีกว่า? ใช่. อย่าใช้ MySQL Timestamps นอกเหนือจากข้อเท็จจริงที่ว่าพวกเขาใช้ 36 ไบต์แล้วยังไม่สะดวกในการทำงานด้วย ฉันขอแนะนำให้ใช้ Julian Date and Seconds ตั้งแต่เที่ยงคืนสำหรับค่าวันที่ / เวลาทั้งหมด สิ่งเหล่านี้สามารถรวมกันเพื่อสร้าง UnixDateTime หากสิ่งนี้ถูกเก็บไว้ใน DWORD (จำนวนเต็ม 4 ไบต์ที่ไม่ได้ลงนาม) จะสามารถจัดเก็บวันที่ได้ถึง 2106 เป็นวินาทีนับตั้งแต่ epoc 01/01/1970 DWORD max val = 4,294,967,295 - DWORD สามารถถือได้ 136 ปีวินาที

Julian Dates ทำได้ดีมากเมื่อทำการคำนวณวันที่ค่า UNIXDateTime นั้นใช้ได้ดีเมื่อทำการคำนวณวันที่ / เวลาดูไม่ดีดังนั้นฉันจึงใช้การประทับเวลาเมื่อฉันต้องการคอลัมน์ที่ฉันจะไม่ทำการคำนวณมากนัก ด้วย แต่ฉันต้องการการบ่งชี้โดยย่อ

การแปลงเป็นจูเลียนและย้อนกลับสามารถทำได้อย่างรวดเร็วในภาษาที่ดี การใช้พอยน์เตอร์ฉันลดลงเหลือประมาณ 900 Clks (นี่เป็นการแปลงจาก STRING เป็น INTEGER แน่นอน)

เมื่อคุณเข้าสู่แอปพลิเคชันที่จริงจังที่ใช้ข้อมูลวันที่ / เวลาเช่นตลาดการเงินวันที่ของ Julian เป็นจริง


คุณได้ข้อมูลเกี่ยวกับข้อเท็จจริงที่ว่าพวกมันครอบครอง 36 ไบต์มาจากไหน? MySQL รัฐคู่มือความต้องการจัดเก็บข้อมูลสำหรับคอลัมน์ลงเวลาเป็น4 ไบต์ dev.mysql.com/doc/refman/5.1/th/storage-requirements.html
poncha

เริ่มวางแผนสำหรับบั๊ก Y2106 ทันที! ;-)
ErichBSchulz

5

แบบสอบถามจะเป็นดังนี้:

select period_diff(date_format(now(),"%Y%m"),date_format(created,"%Y%m")) from customers where..

ให้จำนวนเดือนตามปฏิทินนับตั้งแต่การสร้างข้อมูลล่าสุดในบันทึกของลูกค้าโดยให้ MySQL ทำการเลือกเดือนเป็นการภายใน


2
DROP FUNCTION IF EXISTS `calcula_edad` $$
CREATE DEFINER=`root`@`localhost` FUNCTION `calcula_edad`(pFecha1 date, pFecha2 date, pTipo char(1)) RETURNS int(11)
Begin

  Declare vMeses int;
  Declare vEdad int;

  Set vMeses = period_diff( date_format( pFecha1, '%Y%m' ), date_format( pFecha2, '%Y%m' ) ) ;

  /* Si el dia de la fecha1 es menor al dia de fecha2, restar 1 mes */
  if day(pFecha1) < day(pFecha2) then
    Set vMeses = VMeses - 1;
  end if;

  if pTipo='A' then
    Set vEdad = vMeses div 12 ;
  else
    Set vEdad = vMeses ;
  end if ;
  Return vEdad;
End

select calcula_edad(curdate(),born_date,'M') --  for number of months between 2 dates

2

เรียกใช้โค้ดนี้และจะสร้างฟังก์ชันลงวันที่ความแตกต่างซึ่งจะให้ความแตกต่างในรูปแบบวันที่ yyyy-mm-dd

DELIMITER $$

CREATE FUNCTION datedifference(date1 DATE, date2 DATE) RETURNS DATE
NO SQL

BEGIN
    DECLARE dif DATE;
    IF DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2)))) < 0    THEN
                SET dif=DATE_FORMAT(
                                        CONCAT(
                                            PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))DIV 12 , 
                                            '-',
                                            PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))% 12 , 
                                            '-',
                                            DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(DATE_SUB(date1, INTERVAL 1 MONTH)), '-', DAY(date2))))),
                                        '%Y-%m-%d');
    ELSEIF DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2)))) < DAY(LAST_DAY(DATE_SUB(date1, INTERVAL 1 MONTH))) THEN
                SET dif=DATE_FORMAT(
                                        CONCAT(
                                            PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))DIV 12 , 
                                            '-',
                                            PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))% 12 , 
                                            '-',
                                            DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2))))),
                                        '%Y-%m-%d');
    ELSE
                SET dif=DATE_FORMAT(
                                        CONCAT(
                                            PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))DIV 12 , 
                                            '-',
                                            PERIOD_DIFF(date_format(date1, '%y%m'),date_format(date2, '%y%m'))% 12 , 
                                            '-',
                                            DATEDIFF(date1, DATE(CONCAT(YEAR(date1),'-', MONTH(date1), '-', DAY(date2))))),
                                        '%Y-%m-%d');
    END IF;

RETURN dif;
END $$
DELIMITER;

1
คุณคิดว่าจะทำความสะอาดและแสดงความคิดเห็นโค้ดของคุณได้เล็กน้อยเพื่อให้เข้าใจง่ายขึ้นหรือไม่? ขอบคุณ
Darryl Hein

1

ขึ้นอยู่กับว่าคุณต้องการกำหนด # เดือนอย่างไร ตอบคำถามนี้: 'เดือนที่แตกต่างกันคืออะไร: 15 ก.พ. 2551-12 มี.ค. 2552' กำหนดโดยการตัด # ของวันที่ชัดเจนซึ่งขึ้นอยู่กับปีอธิกสุรทิน - เดือนอะไรหรือวันเดียวกันของเดือนก่อนหน้า = 1 เดือน

การคำนวณวัน :

15 ก.พ. -> 29 (ปีอธิกสุรทิน) = 14 1 มี.ค. 2551 + 365 = 1 มี.ค. 2552 1 มี.ค. -> 12 มี.ค. = 12 วัน 14 + 365 + 12 = 391 วัน. รวม = 391 วัน / (วันเฉลี่ยในเดือน = 30) = 13.03333

การคำนวณเดือน :

15 ก.พ. 2551 - 15 ก.พ. 2552 = 12 ก.พ. 58 -> 12 มี.ค. = น้อยกว่า 1 เดือนรวม = 12 เดือนหรือ 13 ก.พ. 15 - 12 มี.ค. ถือเป็น "เดือนที่ผ่านมา"



1

ฉันต้องการความแตกต่างของเดือนด้วยความแม่นยำ แม้ว่าวิธีการแก้ปัญหาของ Zane Bien จะเป็นไปในทิศทางที่ถูกต้อง แต่ตัวอย่างที่สองและสามของเขาให้ผลลัพธ์ที่ไม่ถูกต้อง วันในเดือนกุมภาพันธ์หารด้วยจำนวนวันในเดือนกุมภาพันธ์ไม่เท่ากับวันในเดือนพฤษภาคมหารด้วยจำนวนวันในเดือนพฤษภาคม ดังนั้นตัวอย่างที่สองควรแสดงผล ((31-5 + 1) / 31 + 13/30 =) 1.3043 และตัวอย่างที่สาม ((29-27 + 1) / 29 + 2/30 + 3 =) 3.1701

ฉันลงเอยด้วยคำถามต่อไปนี้:

SELECT
    '2012-02-27' AS startdate,
    '2012-06-02' AS enddate,
    TIMESTAMPDIFF(DAY, (SELECT startdate), (SELECT enddate)) AS days,
    IF(MONTH((SELECT startdate)) = MONTH((SELECT enddate)), 0, (TIMESTAMPDIFF(DAY, (SELECT startdate), LAST_DAY((SELECT startdate)) + INTERVAL 1 DAY)) / DAY(LAST_DAY((SELECT startdate)))) AS period1,     
    TIMESTAMPDIFF(MONTH, LAST_DAY((SELECT startdate)) + INTERVAL 1 DAY, LAST_DAY((SELECT enddate))) AS period2,
    IF(MONTH((SELECT startdate)) = MONTH((SELECT enddate)), (SELECT days), DAY((SELECT enddate))) / DAY(LAST_DAY((SELECT enddate))) AS period3,
    (SELECT period1) + (SELECT period2) + (SELECT period3) AS months

1

PERIOD_DIFF () ฟังก์ชัน

วิธีหนึ่งคือ MySQL PERIOD_DIFF () ส่งกลับผลต่างระหว่างสองช่วงเวลา ช่วงเวลาควรอยู่ในรูปแบบเดียวกันเช่น YYYYMM หรือ YYMM เป็นที่น่าสังเกตว่าช่วงเวลาไม่ใช่ค่าวันที่

รหัส:

SELECT PERIOD_DIFF(200905,200811);

ใส่คำอธิบายภาพที่นี่


0

คุณสามารถรับปีเดือนและวันด้วยวิธีนี้:

SELECT 
username
,date_of_birth
,DATE_FORMAT(CURDATE(), '%Y') - DATE_FORMAT(date_of_birth, '%Y') - (DATE_FORMAT(CURDATE(), '00-%m-%d') < DATE_FORMAT(date_of_birth, '00-%m-%d')) AS years
,PERIOD_DIFF( DATE_FORMAT(CURDATE(), '%Y%m') , DATE_FORMAT(date_of_birth, '%Y%m') ) AS months
,DATEDIFF(CURDATE(),date_of_birth) AS days
FROM users


0

คำตอบง่ายๆให้วันที่เริ่มต้นเป็น ins_frm และวันที่สิ้นสุดเป็น ins_to

SELECT convert(TIMESTAMPDIFF(year, ins_frm, ins_to),UNSIGNED) as yrs,
       mod(TIMESTAMPDIFF(MONTH, ins_frm, ins_to),12) mnths
FROM table_name

สนุก :)))


0

ลองทำตามนี้

SELECT YEAR(end_date)*12 + MONTH(end_date) - (YEAR(start_date)*12 + MONTH(start_date))

ยินดีต้อนรับสู่ Stack Overflow! อย่าลืมตรวจสอบวันที่ของคำถามและคำตอบที่มีอยู่มีวิธีแก้ปัญหาเดียวกันหรือไม่
lehiester

-1

แบบสอบถามนี้ใช้ได้ผลสำหรับฉัน :)

SELECT * FROM tbl_purchase_receipt
WHERE purchase_date BETWEEN '2008-09-09' AND '2009-09-09'

ใช้เวลาเพียงสองวันและดึงค่าระหว่างพวกเขา


คำตอบที่ไม่ถูกต้องโดยสิ้นเชิงเขาต้องการนับเดือน
Shane Rowatt
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.