PHP Ionic Angular Phonegap AJAX Javascript CSS MySQL jQuery Forum


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

08 September 2014 By
วันที่ mysql

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



โครงสร้างฐานข้อมูลทดสอบ ประกอบคำอธิบาย
 
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 วันที่






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


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