พบกับบทความเกี่ยวกับคอมพิวเตอร์และ programming ได้ที่ http://articles.modoeye.com
PHP development / การเก็บเวลาใน Phpmyadmin
AeKung
AeKung
Fri 29 Jun 2007 02:06:39

ผมจะเก็บเวลาอะครับแต่มีปัญหาว่าจะเก็บแบบไหนดี และควรGEN เวลารูปแบบไหนดี

ผมเห็นใน PhpMyadmin มี Type ของเวลาอยู่ครับ น่าจะเป็น Date  ผมไม่รู้ว่าจะเก็บลักษณะไหนดีคับ สำหรับ Type นี้ เวลาGen จาก PHP ควรเป็นแบบไหน 29/06/2005 หรือ 29-06-2005 ที่จะใช้กับ Date ได้

ขอคำแนะนำเพิ่มเติมด้วยนะครับ
ขอบพระคุณล่วงหน้าครับ

webmaster
webmaster
Fri 29 Jun 2007 11:03:05
การเก็บค่า วันที่/เวลา ในฐานข้อมูลนั้น ใน MySQL จะมี field type ดังนี้
  • Date เก็บข้อมูลชนิดวันที่ (3 bytes)
  • Datetime เก็บข้อมูลชนิดวันที่และเวลา (8 bytes)
  • Time เก็บข้อมูลชนิดเวลา (3 bytes)
  • Timestamp เก็บข้อมูลชนิด Unix Timestamp (4 bytes)
  • Year เก็บข้อมูลชนิดปี (1 byte)
ไม่แนะนำให้สร้างเวลาจากภายนอกในรูปแบบที่ตั้งขึ้นเอง เนื่องจากจะไม่สามารถบันทึกลงฐานข้อมูลใน field ที่ระบุได้อย่างถูกต้อง

ประโยชน์ของการใช้ field ที่ถูกต้องในการเก็บคือสามารถคำนวน หรือจัดรูปแบบ ด้วยภาษา SQL ได้ใน query เดียวกัน
Aekung
Aekung
Sun 1 Jul 2007 04:23:55

ยังง อยู่ครับ

แต่ก่อนผม Gen จากฟังชั่น Date มา สมุตติ 1/07/2005 ผมก็เก็บใส่ตัวแปรตัวหนึ่ง

เวลา insert เข้าฐานข้อมูล ผมจะเลือก Type เป็น Varchar อะครับ

ก็เลยไม่รู้ว่า Type Date จะเอาตัวแปรที่ผมเก็บมา ใส่ไปได้ไหม

รบกวนด้วยนะครับ

webmaster
webmaster
Sun 1 Jul 2007 11:48:07
ในการเก็บข้อมูลวันที่นั้นสามารถใช้ MySQL built-in function ได้ทั้งหมดครับ เช่น
field dt(datetime) ต้องการเก็บ เวลาปัจจุบัน INSERT INTO table_name(dt) VALUES(NOW())
field dt(datetime) ต้องการเก็บเวลาในอีก 8 วันข้างหน้า INSERT INTO table_name(dt) VALUES(DATE_ADD(NOW(), INTERVAL 8 DAY))

ดังนั้นไม่มีความจำเป็นที่จะต้องสร้าง date จาก script เพื่อ insert เข้าไปครับ แต่ถ้ามันจำเป็นจริงๆก็ สามารถใช้ STR_TO_DATE('1/07/2005', '%e/%m/%Y') ในการ convert ได้ครับ
Aekung
Aekung
Wed 4 Jul 2007 18:41:26

ขอบคุณมากนะครับ กระจ่างเลยครับ ขอบคุณครับ

KB
KB
Tue 8 Jan 2008 14:08:35

แล้วถ้าจะ update ละครับ ต้องเขียนโค้ดอย่างไรครับ ผมประยุกต์ไปใช้แล้ว แต่ไม่ได้อะครับ แนะนำหน่อยครับ

KB
KB
Tue 8 Jan 2008 14:11:35

คือจะ update ทั้งวันและเวลาครับ Value มันเก็บลักษณะนี้ 0000-00-00 00:00:00

ในฐานข้อมูลเก็บเป็นประเภท datetime

webmaster
webmaster
Tue 8 Jan 2008 14:39:16
ก็สามารถใช้ function date-time ต่างๆได้เช่นกันครับ เช่น
UPDATE ... date_field=NOW()
UPFATE ... date_field=DATEADD(NOW(), INTERVAL 10)
ฯลฯ
KB
KB
Wed 9 Jan 2008 16:18:12

ขอบคุณมากๆ ครับ ใช้ได้ละ

KB
KB
Wed 9 Jan 2008 17:24:58

ผมเจอปัญหาต่อเนื่องอะครับ คือว่าจะเอาข้อมูลในวันที่ต้องการออกมาแสดง แต่ไม่รู้จะเขียนโค้ดยังไง

ตารางชื่อ Product ฟลิด์ที่เก็บวันเวลาชื่อ Recieved ครับ

<?php
$sql = "USE Project;";
$result = mysql_query($sql);
$sql = "select * from Product where Recieved=______;";


?>

ตรง _______ คือผมไม่รู้ว่าต้องเขียนโค้ดอย่างไรอะครับ

KB
KB
Wed 9 Jan 2008 18:25:11

ผมลองใส่โคด้นี้ดู

<?php
$sql = "USE Project;";
$result = mysql_query($sql);
$sql = "select * from product where Recieved like '2008-01-09 16:24:15' ;";
$result = mysql_query($sql);
echo mysql_result($result, 0, "brand");
?>

มันแสดงผมออกมาครับ แต่ว่าผมต้องการใช้คีย์แค่ '2008-01-09 ไม่มีเวลานะครับ ไม่ทราบว่าต้องใส่โคด้ยังไง

webmaster
webmaster
Thu 10 Jan 2008 07:27:18
ตัว field ที่เป็น date, datetime, timestamp จะไม่ได้เก็บแบบ Varchar ครับดังนั้นต้องทำการแปลงเป็นข้อมูลชนิดเดียวกันครับ
SELECT ... WHERE Recieved=STR_TO_DATE('2008-01-09', '%Y-%m-%d')

ปล. การเปรียบเทียบ varchar ไม่ควรใช้ like ถ้าไม่ได้ใช้ในการค้นหา
kor
kor
Tue 29 Jan 2008 18:27:01
คือจะ update วัน Value มันจะเก็บลักษณะนี้ วันที่-เดือน-พ.ศ. เป็นภาษาไทยทั้งหมดสร้างฟังก์ชั่นให้มันแล้วแต่ว่ามันไม่ยอมเก็บค่า มันแสดงออกมาเป็น 0000-00-00 ตลอดเวลาทั้งในฐานข้อมูลและที่แสดงออกมาโชว์หน้าเวบอ่ะค่ะ
webmaster
webmaster
Tue 29 Jan 2008 19:05:00
ไม่ควรเก็บเป็น พศ ครับเพราะไม่ใช่มาตรฐานสากล จะทำให้ตัวเองอยู่ในภาวะลำบาก ถ้าข้อมูลเดิมเป็น พศ ก็ควรทำการแปลงซะให้หมด
kor
kor
Wed 30 Jan 2008 00:21:42

function displaydate($x)
 {
 $thai_m=array("มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน",
 "ธันวาคม");
 $date_array=explode("-",$x);
 $y=$date_array[0];
 $m=$date_array[1]-1;
 $d=$date_array[2];
 
 $m=$thai_m[$m];
 $y=$y+543;
 
 $displaydate="$d $m $y";
 return $displaydate;
 }

code เป็นแบนี้อ่ะคะมันไม่เห็นเก็บค่าเลยอ่ะค่ะ

webmaster
webmaster
Wed 30 Jan 2008 12:16:52
ชื่อฟังก์ชั่นก็บอกนี่ครับว่าใช้ในการแสดงผล แล้วถ้าจะเก็บก็ต้องเป็นแบบ Varchar เท่านั้น
ton
ton
Wed 30 Jan 2008 14:16:04
ขอ code webboard ที่พอจะเป็ฯแนวทางให้บ้างได้ไหมครับ
kor
kor
Wed 30 Jan 2008 16:04:09
แต่ว่ามันม่แสดงออกมานี่ค่ะ มันแสดงออกมาเป็น 0000-00-00 ตลอดเลยทั้งในฐานข้อมูลแล้วก็ในหน้าเวบ
webmaster
webmaster
Wed 30 Jan 2008 18:38:09
คุณใส่ค่าใดให้กับ function ล่ะครับ อีกอย่างตัวแปรพยายามอย่าตั้งชื่อเดียวกับ function ครับ

ส่วนท่านที่สอบถามเรื่อง source code นั้นขออภัยด้วยครับ ทางเราไม่มีนโยบายแจกปลาครับ เราสอนแต่วิธีจับปลาและการใช้เครื่องมือหาปลาครับ
pui
pui
Wed 28 May 2008 11:31:28
รบกวนถามกรณีที่เราเก็บ เวลาเป็น timestamp เมื่อจะทำการ query วันเวลาออกมา มีคำสั่ง query ที่จะสามารถดึงข้อมูลออกมาเป็นรูปแบบ date-time โดยไม่ต้องมาแปลงด้วย php อีกทีไหมคะ อย่างกรณีที่เราเก็บแบบ varchar แล้วเราก็ใช้คำสั่ง 

str_to_date(FieldDateName,'%d-%m-%Y %H:%i:%s'

ประมาณนี้ค่ะ รบกวนด้วยนะคะ

ขอบคุณค่ะ

webmaster
webmaster
Wed 28 May 2008 14:01:32
ก็สามารถได้ DATE_FORMAT() ได้กับ field ชนิด date, datetime, time, timestamp ได้ครับ
masty
masty
Sat 31 May 2008 13:28:14
ขอบคุณพี่ 
webmaster

ที่ทำให้ผมได้กระจ่างมากยิ่งขึ้น ขอบพระคุณ จริงๆๆครับ
Reply
Name:
E-mail:
Home | Services | Forum | Classified | Directories | Support | Contact
ATOM feed RSS 0.9 feed RSS 1.0 feed RSS 2.0 feed
Copyright © 2005 - 2007 Modoeye.com, All Rights Reserved.
Disclaimer | Privacy policy | Term of Use | Term of Services
Valid XHTML Valid CSS! PHP: Hypertext Preprocessor MySQL database Apache Powered! FreeBSD Power to serve
Modoeye Sitemap Client login