ตัวอย่าง การใช้งาน วันที่ ใน mysql และคำสั่ง เทคนิค การ query

เขียนเมื่อ 6 ปีก่อน โดย Ninenik Narkdee
เงื่อนไขวันที่ mysql วันที่

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ เงื่อนไขวันที่ mysql วันที่





โครงสร้างฐานข้อมูลทดสอบ ประกอบคำอธิบาย
 

--
-- Table structure for table `tbl_mydata`
--

CREATE TABLE `tbl_mydata` (
  `id` int(11) NOT NULL,
  `name` varchar(1) DEFAULT NULL,
  `date1` datetime DEFAULT NULL,
  `date2` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Dumping data for table `tbl_mydata`
--

INSERT INTO `tbl_mydata` (`id`, `name`, `date1`, `date2`) VALUES
(1, 'A', '2014-08-01 00:30:00', '2014-08-01 00:30:00'),
(2, 'B', '2014-08-02 00:30:00', '2014-08-03 00:30:00'),
(3, 'C', '2014-08-03 00:30:00', '2014-08-05 00:30:00'),
(4, 'D', '2014-08-04 00:30:00', '2014-08-07 00:30:00'),
(5, 'E', '2014-08-05 00:30:00', '2014-08-09 00:30:00'),
(6, 'F', '2014-08-06 00:30:00', '2014-08-11 00:30:00'),
(7, 'G', '2014-08-07 00:30:00', '2014-08-13 00:30:00'),
(8, 'H', '2014-08-07 15:20:00', '2014-08-15 00:30:00'),
(9, 'I', '2014-08-09 00:30:00', '2014-08-17 00:30:00'),
(10, 'J', '2014-08-10 00:30:00', '2014-08-19 00:30:00'),
(11, 'K', '2014-08-11 00:30:00', '2014-08-21 00:30:00'),
(12, 'L', '2014-08-12 00:30:00', '2014-08-23 00:30:00'),
(13, 'M', '2014-08-13 00:30:00', '2014-08-25 00:30:00'),
(14, 'N', '2014-08-14 00:30:00', '2014-08-27 00:30:00'),
(15, 'O', '2014-08-15 00:30:00', '2014-08-29 00:30:00');

--
-- Indexes for dumped tables
--

--
-- Indexes for table `tbl_mydata`
--
ALTER TABLE `tbl_mydata`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT for table `tbl_mydata`
--
ALTER TABLE `tbl_mydata`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=16;
COMMIT;
 
ให้รู้ข้อมูลเบื้องต้น
curdate() ใน mysql คือ วันที่ปัจจุบัน ไม่มีเวลา เช่น 2010-08-01
 
SELECT curdate()
 
now() ใน mysql คือ วันที่และเวลาปัจจุบัน เช่น  2014-08-01 00:01:00
SELECT now()
 
การเทียบข้อมูล เท่ากับ หรือไม่เท่ากับ =,!=
กรณีรูปแบบข้อมูลวันที่ ที่เก็บตรงกัน สามารถเปรียบเทียบค่าได้เลย
เช่น
datetime กับ datetime
หรือ 
date กับ date
 
ในตารางฐานข้อมูลตัวอย่าง เราเก็บข้อมูลเป็น datetime
หากต้องการเปรียบ แบบ date สามารถทำได้ โดยใช้ คำสั่งฟังก์ชั่น date ใน mysql
เช่น
// สมมติ date1 เท่ากับ 2014-08-01 00:30:00
 
date(date1)='2014-08-01'  // ก็จะแสดงข้อมุลตามเงื่อนไขวันที่ถูกต้อง
 
 
ชุดข้อมูลสำหรับทดสอบ

// การแสดงข้อมูลในสัปดาห์ โดยเริ่มจากวันจันทร์ ถึงวันอาทิตย์
// วิธีนี้ มีการใช้งาน php เพื่อกำหนดช่วง ของวัน
// ตัวอย่างจากข้อมูล ในตารางมี ช่วงสัปดาห์ อยู่ 3 ช่วง
// ช่วงที่ 1 วันที่ 1 ถึง 3 ช่วงวัน ศุกร์ เสาร์ อาทิตย์
// ช่วงที่ 2 วันที่ 4 ถึง 10 เต็มสัปดาห์ วัน จันทร์ถึงอาทิตย์
// ช่วงที่ 3 วันที่ 11 ถึง 15 ช่วงวั จันทร์ อังคาร พุธ พฤหัส ศุกร์
// ถ้าวันที่ตอนนี้คือ 2014-08-06 ดังนั้น ข้อมูลทั้งหมดที่จะแสดง คือ ข้อมูลสัปดาห์ ช่วงที่ 2 
$startWeekDay_back=(date("w",strtotime("2014-08-06"))!=0)?-(date("w",strtotime("2014-08-06")))+1:-7;
$startWeekDay_next=(date("w",strtotime("2014-08-06"))!=0)?7-(date("w",strtotime("2014-08-06"))):0;
$q="
SELECT * FROM tbl_mydata WHERE date(date1)>=date_add('2014-08-06',interval ".$startWeekDay_back." day)   
AND date(date1)<=date_add('2014-08-06',interval ".$startWeekDay_next." day)   
";
// วิธีที่สอง วิธีนี้ ใช้การจัดการในคำสั่ง โดยใช้ YEARWEEK(date,[mode]) ฟังก์ชั่น
// โดยฟังก์ชั่นนี้ จะคืนค่าเป็น ปีสี่หลักต่อด้วยตัวเลขสัปดาห์ เช่น
// SELECT YEARWEEK('2014-08-06',3) จะเท่ากับ 201432 คือปี 2014 และสัปดาห์ที่ 32
// ค่า mode เรากำหนด 3 เพื่อให้จำนวนสัปดาห์เริ่มที่วันจันทร์ มีสัปดาห์ตั้งแต่ 1-53
// ถ้าจะหาว่าวันนี้เป็นปีและสัปดาห์ที่เท่าไหร่ ก็กำหนดเป็น 
// SELECT YEARWEEK(CURDATE(),3) 
// ดังนั้น เราจะใช้ค่านี้ ในการกำหนดวันในสัปดาห์ เพราะวันที่ในสัปดาห์เดียวกัน จะมีค่า YEARWEEK เท่ากัน
// เราจะได้คำสั่ง sql ง่ายๆ ดังนี้

SELECT * FROM tbl_mydata WHERE YEARWEEK(date(date1),3)=YEARWEEK('2014-08-06',3)

// วิธ๊นี้ง่ายที่สุด เมื่อเทียบกับกรณีกำหนดเงื่อนไขด้วย php ซึ่งผลลัพธ์ที่ได้ก็จะเหมือนกัน

ID Name Date1 Date2
1 A 2014-08-01 00:30:00 2014-08-01 00:30:00
2 B 2014-08-02 00:30:00 2014-08-03 00:30:00
3 C 2014-08-03 00:30:00 2014-08-05 00:30:00
4 D 2014-08-04 00:30:00 2014-08-07 00:30:00
5 E 2014-08-05 00:30:00 2014-08-09 00:30:00
6 F 2014-08-06 00:30:00 2014-08-11 00:30:00
7 G 2014-08-07 00:30:00 2014-08-13 00:30:00
8 H 2014-08-07 15:20:00 2014-08-15 00:30:00
9 I 2014-08-09 00:30:00 2014-08-17 00:30:00
10 J 2014-08-10 00:30:00 2014-08-19 00:30:00
11 K 2014-08-11 00:30:00 2014-08-21 00:30:00
12 L 2014-08-12 00:30:00 2014-08-23 00:30:00
13 M 2014-08-13 00:30:00 2014-08-25 00:30:00
14 N 2014-08-14 00:30:00 2014-08-27 00:30:00
15 O 2014-08-15 00:30:00 2014-08-29 00:30:00


// ถ้าวันที่ตอนนี้คือ 2014-08-10 แสดงข้อมูลวันที่ ย้อนหลัง 1 สัปดาห์ รวมวันปัจจุบัน
SELECT * FROM tbl_mydata WHERE date(date1)>=date_add('2014-08-10',interval -1 week)   
AND date(date1)<=curdate() 
// .ใช้แบบนี้แทนได้ ถ้า วันที่กำหนดคือวันที่ปัจจุบัน
SELECT * FROM tbl_mydata WHERE date(date1)>=date_add(curdate(),interval -1 week)   
AND date(date1)<=curdate()

ID Name Date1 Date2
1 A 2014-08-01 00:30:00 2014-08-01 00:30:00
2 B 2014-08-02 00:30:00 2014-08-03 00:30:00
3 C 2014-08-03 00:30:00 2014-08-05 00:30:00
4 D 2014-08-04 00:30:00 2014-08-07 00:30:00
5 E 2014-08-05 00:30:00 2014-08-09 00:30:00
6 F 2014-08-06 00:30:00 2014-08-11 00:30:00
7 G 2014-08-07 00:30:00 2014-08-13 00:30:00
8 H 2014-08-07 15:20:00 2014-08-15 00:30:00
9 I 2014-08-09 00:30:00 2014-08-17 00:30:00
10 J 2014-08-10 00:30:00 2014-08-19 00:30:00
11 K 2014-08-11 00:30:00 2014-08-21 00:30:00
12 L 2014-08-12 00:30:00 2014-08-23 00:30:00
13 M 2014-08-13 00:30:00 2014-08-25 00:30:00
14 N 2014-08-14 00:30:00 2014-08-27 00:30:00
15 O 2014-08-15 00:30:00 2014-08-29 00:30:00


// ถ้าวันที่ตอนนี้คือ 2014-08-10 แสดงข้อมูลวันที่ ย้อนหลัง 4 วัน และล่วงหน้า 4 วัน 
SELECT * FROM tbl_mydata WHERE date(date1)>=date_add('2014-08-10',interval -4 day)   
AND date(date1)<=date_add('2014-08-10',interval 4 day)   
// .ใช้แบบนี้แทนได้ ถ้า วันที่กำหนดคือวันที่ปัจจุบัน
SELECT * FROM tbl_mydata WHERE date(date1)>=date_add(curdate(),interval -4 day)   
AND date(date1)<=date_add(curdate(),interval 4 day)   

ID Name Date1 Date2
1 A 2014-08-01 00:30:00 2014-08-01 00:30:00
2 B 2014-08-02 00:30:00 2014-08-03 00:30:00
3 C 2014-08-03 00:30:00 2014-08-05 00:30:00
4 D 2014-08-04 00:30:00 2014-08-07 00:30:00
5 E 2014-08-05 00:30:00 2014-08-09 00:30:00
6 F 2014-08-06 00:30:00 2014-08-11 00:30:00
7 G 2014-08-07 00:30:00 2014-08-13 00:30:00
8 H 2014-08-07 15:20:00 2014-08-15 00:30:00
9 I 2014-08-09 00:30:00 2014-08-17 00:30:00
10 J 2014-08-10 00:30:00 2014-08-19 00:30:00
11 K 2014-08-11 00:30:00 2014-08-21 00:30:00
12 L 2014-08-12 00:30:00 2014-08-23 00:30:00
13 M 2014-08-13 00:30:00 2014-08-25 00:30:00
14 N 2014-08-14 00:30:00 2014-08-27 00:30:00
15 O 2014-08-15 00:30:00 2014-08-29 00:30:00


// ถ้าวันที่ตอนนี้คือ 2014-08-10 แสดงข้อมูลวันที่ ล่วงหน้า 4 วัน (ต้องมีข้อมูลของวันที่ล่วงหน้า
//  ข้อมูลถึงจะแสดง )
SELECT * FROM tbl_mydata WHERE date(date1)>='2014-08-10' 
AND date(date1)<=date_add('2014-08-10',interval 4 day)   
// .ใช้แบบนี้แทนได้ ถ้า วันที่กำหนดคือวันที่ปัจจุบัน
SELECT * FROM tbl_mydata WHERE date(date1)>=curdate()
AND  date(date1)<=date_add(curdate(),interval 4 day)   

ID Name Date1 Date2
1 A 2014-08-01 00:30:00 2014-08-01 00:30:00
2 B 2014-08-02 00:30:00 2014-08-03 00:30:00
3 C 2014-08-03 00:30:00 2014-08-05 00:30:00
4 D 2014-08-04 00:30:00 2014-08-07 00:30:00
5 E 2014-08-05 00:30:00 2014-08-09 00:30:00
6 F 2014-08-06 00:30:00 2014-08-11 00:30:00
7 G 2014-08-07 00:30:00 2014-08-13 00:30:00
8 H 2014-08-07 15:20:00 2014-08-15 00:30:00
9 I 2014-08-09 00:30:00 2014-08-17 00:30:00
10 J 2014-08-10 00:30:00 2014-08-19 00:30:00
11 K 2014-08-11 00:30:00 2014-08-21 00:30:00
12 L 2014-08-12 00:30:00 2014-08-23 00:30:00
13 M 2014-08-13 00:30:00 2014-08-25 00:30:00
14 N 2014-08-14 00:30:00 2014-08-27 00:30:00
15 O 2014-08-15 00:30:00 2014-08-29 00:30:00


// ถ้าวันที่ตอนนี้คือ 2014-08-10 แสดงข้อมูลวันที่ ย้อนหลัง 4 วัน
SELECT * FROM tbl_mydata WHERE date(date1)>=date_add('2014-08-10',interval -4 day)   
AND date(date1)<='2014-08-10'
// .ใช้แบบนี้แทนได้ ถ้า วันที่กำหนดคือวันที่ปัจจุบัน
SELECT * FROM tbl_mydata WHERE date(date1)>=date_add(curdate(),interval -4 day)   
AND date(date1)<=curdate()

ID Name Date1 Date2
1 A 2014-08-01 00:30:00 2014-08-01 00:30:00
2 B 2014-08-02 00:30:00 2014-08-03 00:30:00
3 C 2014-08-03 00:30:00 2014-08-05 00:30:00
4 D 2014-08-04 00:30:00 2014-08-07 00:30:00
5 E 2014-08-05 00:30:00 2014-08-09 00:30:00
6 F 2014-08-06 00:30:00 2014-08-11 00:30:00
7 G 2014-08-07 00:30:00 2014-08-13 00:30:00
8 H 2014-08-07 15:20:00 2014-08-15 00:30:00
9 I 2014-08-09 00:30:00 2014-08-17 00:30:00
10 J 2014-08-10 00:30:00 2014-08-19 00:30:00
11 K 2014-08-11 00:30:00 2014-08-21 00:30:00
12 L 2014-08-12 00:30:00 2014-08-23 00:30:00
13 M 2014-08-13 00:30:00 2014-08-25 00:30:00
14 N 2014-08-14 00:30:00 2014-08-27 00:30:00
15 O 2014-08-15 00:30:00 2014-08-29 00:30:00


// วันที่อยู่ในช่วง  วันที่และเวลาที่กำหนด
SELECT * FROM tbl_mydata WHERE date1>='2014-08-02 00:30:00' 
AND date1<='2014-08-05 00:30:00' 
// หรือใช้ BETWEEN ... AND ....
SELECT * FROM tbl_mydata WHERE date1 BETWEEN '2014-08-02 00:30:00' 
AND '2014-08-05 00:30:00' 

ID Name Date1 Date2
1 A 2014-08-01 00:30:00 2014-08-01 00:30:00
2 B 2014-08-02 00:30:00 2014-08-03 00:30:00
3 C 2014-08-03 00:30:00 2014-08-05 00:30:00
4 D 2014-08-04 00:30:00 2014-08-07 00:30:00
5 E 2014-08-05 00:30:00 2014-08-09 00:30:00
6 F 2014-08-06 00:30:00 2014-08-11 00:30:00
7 G 2014-08-07 00:30:00 2014-08-13 00:30:00
8 H 2014-08-07 15:20:00 2014-08-15 00:30:00
9 I 2014-08-09 00:30:00 2014-08-17 00:30:00
10 J 2014-08-10 00:30:00 2014-08-19 00:30:00
11 K 2014-08-11 00:30:00 2014-08-21 00:30:00
12 L 2014-08-12 00:30:00 2014-08-23 00:30:00
13 M 2014-08-13 00:30:00 2014-08-25 00:30:00
14 N 2014-08-14 00:30:00 2014-08-27 00:30:00
15 O 2014-08-15 00:30:00 2014-08-29 00:30:00


// วันที่มากกว่า วันที่และเวลาที่กำหนด
SELECT * FROM tbl_mydata WHERE date1>'2014-08-07 00:30:00'

ID Name Date1 Date2
1 A 2014-08-01 00:30:00 2014-08-01 00:30:00
2 B 2014-08-02 00:30:00 2014-08-03 00:30:00
3 C 2014-08-03 00:30:00 2014-08-05 00:30:00
4 D 2014-08-04 00:30:00 2014-08-07 00:30:00
5 E 2014-08-05 00:30:00 2014-08-09 00:30:00
6 F 2014-08-06 00:30:00 2014-08-11 00:30:00
7 G 2014-08-07 00:30:00 2014-08-13 00:30:00
8 H 2014-08-07 15:20:00 2014-08-15 00:30:00
9 I 2014-08-09 00:30:00 2014-08-17 00:30:00
10 J 2014-08-10 00:30:00 2014-08-19 00:30:00
11 K 2014-08-11 00:30:00 2014-08-21 00:30:00
12 L 2014-08-12 00:30:00 2014-08-23 00:30:00
13 M 2014-08-13 00:30:00 2014-08-25 00:30:00
14 N 2014-08-14 00:30:00 2014-08-27 00:30:00
15 O 2014-08-15 00:30:00 2014-08-29 00:30:00


// ดูเฉพาะวันที่ที่ตรงกันกับวันที่ที่กำหนด เวลาใดก็ได้
SELECT * FROM tbl_mydata WHERE date(date1)='2014-08-07'

ID Name Date1 Date2
1 A 2014-08-01 00:30:00 2014-08-01 00:30:00
2 B 2014-08-02 00:30:00 2014-08-03 00:30:00
3 C 2014-08-03 00:30:00 2014-08-05 00:30:00
4 D 2014-08-04 00:30:00 2014-08-07 00:30:00
5 E 2014-08-05 00:30:00 2014-08-09 00:30:00
6 F 2014-08-06 00:30:00 2014-08-11 00:30:00
7 G 2014-08-07 00:30:00 2014-08-13 00:30:00
8 H 2014-08-07 15:20:00 2014-08-15 00:30:00
9 I 2014-08-09 00:30:00 2014-08-17 00:30:00
10 J 2014-08-10 00:30:00 2014-08-19 00:30:00
11 K 2014-08-11 00:30:00 2014-08-21 00:30:00
12 L 2014-08-12 00:30:00 2014-08-23 00:30:00
13 M 2014-08-13 00:30:00 2014-08-25 00:30:00
14 N 2014-08-14 00:30:00 2014-08-27 00:30:00
15 O 2014-08-15 00:30:00 2014-08-29 00:30:00


// วันที่และเวลา เท่ากับวันที่ที่กำหนด
SELECT * FROM tbl_mydata WHERE date1='2014-08-04 00:30:00'

ID Name Date1 Date2
1 A 2014-08-01 00:30:00 2014-08-01 00:30:00
2 B 2014-08-02 00:30:00 2014-08-03 00:30:00
3 C 2014-08-03 00:30:00 2014-08-05 00:30:00
4 D 2014-08-04 00:30:00 2014-08-07 00:30:00
5 E 2014-08-05 00:30:00 2014-08-09 00:30:00
6 F 2014-08-06 00:30:00 2014-08-11 00:30:00
7 G 2014-08-07 00:30:00 2014-08-13 00:30:00
8 H 2014-08-07 15:20:00 2014-08-15 00:30:00
9 I 2014-08-09 00:30:00 2014-08-17 00:30:00
10 J 2014-08-10 00:30:00 2014-08-19 00:30:00
11 K 2014-08-11 00:30:00 2014-08-21 00:30:00
12 L 2014-08-12 00:30:00 2014-08-23 00:30:00
13 M 2014-08-13 00:30:00 2014-08-25 00:30:00
14 N 2014-08-14 00:30:00 2014-08-27 00:30:00
15 O 2014-08-15 00:30:00 2014-08-29 00:30:00





   เพิ่มเติมเนื้อหา ครั้งที่ 1 วันที่ 14-03-2019


แนวทางประยุกต์เพิ่มเติม

 
// แสดงเพราะวันที่เป็นเสาร์อาทิตย์ สามารถใช้ฟังก์ชั่น WEEKDAY(date) หรือ DAYOFWEEK(date)
// โดยถ้าเป็น WEEKDAY(date) ค่า (0 = Monday, 1 = Tuesday, … 6 = Sunday)
// และถ้าเป็น DAYOFWEEK(date) ค่า (1 = Sunday, 2 = Monday, …, 7 = Saturday).

SELECT * FROM tbl_mydata WHERE WEEKDAY(date(date1)) IN (5,6)

// หรือ

SELECT * FROM tbl_mydata WHERE DAYOFWEEK(date(date1)) IN (1,7)

// หรือถ้าต้องการแสดงเฉพาะวันใดๆ ก็สามารถกำหนดตัวเลขที่ต้องการลงใน IN () ถ้าเลือกหลายวัน
// ก็คั่นด้วย , เช่น (1,2,4) 

// ถ้าต้องการเลือกวันที่ตรงข้าม เช่นถ้าต้องการวันธรรมดาไม่ใช่เสาร์อาทิตย์ แทนที่เราจะกำหนด

SELECT * FROM tbl_mydata WHERE WEEKDAY(date(date1)) IN (0,1,2,3,4)

// ก็ใช้แบบ NOT IN () แทนได้ ก็จะได้เป็น

SELECT * FROM tbl_mydata WHERE WEEKDAY(date(date1)) NOT IN (5,6)


// เราสามารถใช้ฟังก์ชั่น WEEKDAY() ในเงื่อนไข GROUP BY กรณีต้องการหาผลรวมเฉพาะรายการในวันนั้นๆ
// เช่นสมมติเราอยากรู้ว่า ยอดรวมของวันจันทร์ทั้งหมดเป็นเท่าไหร่ ก็จะใช้เป็น

SELECT SUM(id),date1 FROM tbl_mydata
GROUP BY
WEEKDAY(date(date1)) 
HAVING WEEKDAY(date(date1)) IN(0)

// หรือ 

SELECT SUM(id),date1,WEEKDAY(date(date1)) FROM tbl_mydata 
GROUP BY WEEKDAY(date(date1)) HAVING WEEKDAY(date(date1)) IN(0)


// * หากมีการกำหนด HAVING เราต้อง select ฟิลด์ข้อมูลนั้นๆ มาด้วย ถึงแม้จะไม่ได้ใช้งานก็ตาม
// อย่างข้างต้น เรามี SELECT date1 มาด้วย ไม่เช่นนั้นจะ error เช่น

SELECT SUM(id),WEEKDAY(date(date1)) FROM tbl_mydata 
GROUP BY WEEKDAY(date(date1)) HAVING WEEKDAY(date(date1)) IN(0)

// ตัวอย่างนี้จะ error เพราะไม่มีการ select date1 มาด้วย ทำให้ไม่มีฟิลด์ date1 ที่จะถูกเรียกใช้ใน HAVING


   เพิ่มเติมเนื้อหา ครั้งที่ 2 วันที่ 14-03-2019


ฟังก์ชั่น STR_TO_DATE()

เราสามารถใช้ฟังก์ชั่น STR_TO_DATE() จัดการกับข้อมูลที่ส่งมา เพื่อให้อยู่ในรูปแบบวันที่
ได้ โดยไม่ต้องจัดรูปแบบด้วยฟังก์ชั่น php ใดๆ 
    อย่างสมมติเช่น เราเลือกรายการวันที่ ในฟอร์มก่อนส่งข้อมูลมาเป็น วัน/เดือน/ปี
ยกตัวอย่าง 06/08/2014 ซึ่งถ้าเราจัดรูปแบบก่อนส่ง เป็น 2014-08-06 เราก็จะสามารถใช้รูปแบบนี้
เข้าไปร่วมกับคำสั่งคิวรี่ใน sql ได้เลย แต่ในที่นี้ จะแนะนำอีกวิธี ที่เราใช้การจัดรูปแบบในคำสั่ง sql
ได้เลย โดยข้อมูลที่เราส่งมา ก็ไม่ต้องเปลี่ยนแปลงก่อนส่ง จะได้เป็นดังนี้
 
SELECT *  FROM tbl_mydata WHERE date(date1)>=STR_TO_DATE('06/08/2014','%d/%m/%Y')
 
สมมติว่าตัวแปรวันที่เราส่งมาในตัวแปร $_POST['date1'] ส่งมาในรูปแบบ 06/08/2014
 
คำสั่งใน sql ก็จะเป็น
 
$sql = "
SELECT *  FROM tbl_mydata 
WHERE date(date1)>=STR_TO_DATE('".$_POST['date1']."','%d/%m/%Y')
";
 
ซึ่งถ้า echo ค่าคำสั่ง sql ออกมา ก็จะเป็น
 
SELECT *  FROM tbl_mydata WHERE date(date1)>2014-08-06
 
การใช้งาน STR_TO_DATE() ก็จะกำหนดค่า 2 parameter คือวันที่ที่ส่งมา กับรูปแบบของวันที่ที่ส่งมา
อย่าง 06/08/2014 ก็จะเป็น %d/%m/%Y
 
รูปแบบการระบุ ค่าต่างๆ ดูเพิ่มเติม จากตารางด้าานล่าง

การระบุ คำอธิบาย
%a ชื่อวันแบบย่อ 3 ตัวอักษร (Sun..Sat)
%b ชื่อเดือนแบบย่อ 3 ตัวอักษร (Jan..Dec)
%c เดือนเป็นตัวเลข, (0..12)
%D วันที่ของเดือนนั้นต่อท้ายด้วยการระบุลำดับในภาษาอังกฤษ (0th, 1st, 2nd, 3rd, …)
%d วันที่ของเดือน 2 ตัวอักษร(00..31)
%e วันที่ของเดือน ตัวเลข (0..31)
%f วินาทีหน่ายไมโคร (000000..999999)
%H ชั่วโมง 2 ตัวอักษร รูปแบบ 24 ชม.(00..23)
%h ชั่วโมง 2 ตัวอักษร รูปแบบ 12 ชม. (01..12)
%I ชั่วโมง 2 ตัวอักษร รูปแบบ 12 ชม. (01..12)
%i นาที 2 ตัวอักษร (00..59)
%j ลำดับวันใน 1 ปี 3 ตัวอักษร (001..366)
%k ชั่วโมง ตัวเลข รูปแบบ 24 ชม. (0..23)
%l ชั่วโมง ตัวเลข รูปแบบ 12 ชม. (1..12)
%M ชื่อเดือนแบบเต็ม (January..December)
%m เดือน 2 ตัวอักษร, (00..12)
%p ก่อนเที่ยง หรือ หลังเที่ยง AM or PM
%r เวลา รูปแบบ 12 ชม. มี AM หรือ PM ต่อท้าย (hh:mm:ss followed by AM or PM)
%S วินาที 2 ตัวอักษร (00..59)
%s วินาที 2 ตัวอักษร (00..59)
%T เวลา รูปแบบ 24 ชม. (hh:mm:ss)
%U ลำดับสัปดาห์่ 2 ตัวอักษร (00..53), เมื่อให้วัน อาทิตย์ เป็นวันแรกของสัปดาห์ WEEK() mode 0
%u ลำดับสัปดาห์่ (00..53), เมื่อให้ วันจันทร์ เป็นวันแรกของสัปดาห์ WEEK() mode 1
%V ลำดับสัปดาห์่ (01..53), เมื่อให้ วันอาทิตย์ เป็นวันแรกของสัปดาห์ WEEK() mode 2; ใช้ร่วมกับ %X
%v ลำดับสัปดาห์่ (01..53), เมื่อให้ วันจันทร์ เป็นวันแรกของสัปดาห์ WEEK() mode 3; ใช้ร่วมกับ %x
%W ชื่อวันแบบเต็ม (Sunday..Saturday)
%w เลขวันในสัปดาห์ (0=Sunday..6=Saturday)
%X เลขปี 4 หลักของสัปดาห์ที่ใช้ วันอาทิตย์ เป็นวันแรก ใช้ร่วมกับ %V
%x เลขปี 4 หลักของสัปดาห์ที่ใช้ วันจันทร์ เป็นวันแรก ใช้ร่วมกับ %v
%Y เลขปี ค.ศ. 4 ตัวอักษร
%y เลขปี ค.ศ. 2 ตัวอักษร ท้าย
%% แทนตัวอักษร %
%x x, แทนตัวอักษรใดๆ โดยx คือค่าที่ไม่ได้ระบุตามเงื่อนไขด้านบน


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ







เนื้อหาที่เกี่ยวข้อง









URL สำหรับอ้างอิง











เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ