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

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

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

ดูแล้ว 56,241 ครั้ง




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

--
-- 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 สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







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