PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

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

08 September 2014 By


โครงสร้างฐานข้อมูลทดสอบ ประกอบคำอธิบาย
 
CREATE TABLE  `mydata` (
 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
 `name` VARCHAR( 255 ) NOT NULL ,
 `date1` DATETIME NOT NULL ,
 `date2` DATETIME NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
 
ให้รู้ข้อมูลเบื้องต้น
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 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)   
";

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 mydata WHERE date(date1)>=date_add('2014-08-10',interval -1 week)   
AND date(date1)<=curdate() 
// .ใช้แบบนี้แทนได้ ถ้า วันที่กำหนดคือวันที่ปัจจุบัน
SELECT * FROM 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 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 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 mydata WHERE date(date1)>='2014-08-10' 
AND date(date1)<=date_add('2014-08-10',interval 4 day)   
// .ใช้แบบนี้แทนได้ ถ้า วันที่กำหนดคือวันที่ปัจจุบัน
SELECT * FROM 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 mydata WHERE date(date1)>=date_add('2014-08-10',interval -4 day)   
AND date(date1)<='2014-08-10'
// .ใช้แบบนี้แทนได้ ถ้า วันที่กำหนดคือวันที่ปัจจุบัน
SELECT * FROM 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 mydata WHERE date1>='2014-08-02 00:30:00' 
AND date1<='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 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 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 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






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



Tags:: วันที่ mysql





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