Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > Community Zone > Forum > mysql สอบถามเกี่ยวกับการ select ข้อมูลวันที่จากฐานข้อมูลมาแสดงว่าทำอย่างไร



 

mysql สอบถามเกี่ยวกับการ select ข้อมูลวันที่จากฐานข้อมูลมาแสดงว่าทำอย่างไร

 



Topic : 112404



โพสกระทู้ ( 107 )
บทความ ( 0 )



สถานะออฟไลน์




1.หน้าเว็บมีช่องกรอกวันที่ เช่น วันที่เริ่มต้น.................... ถึง วันที่สิ้นสุด....................................
2.ต้องการแสดงข้อมูลวันที่ตามเงื่อนไข ซึ่งใน database เก้บข้อมูลวันที่แบบ text [เก็บเป็น พ.ศ.] เช่น 01/10/2557
มีวิธีการทำอย่างไรครับ รบกวนขอคำชี้แนะด้วยครับ



Tag : MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2014-11-06 16:39:08 By : udorn555 View : 2467 Reply : 12
 

 

No. 1



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

Code (SQL)
select date_format(str_to_date('01/10/2557', '%d/%m/%Y'), '%Y-%m-%d')


แปลงเอาครับ จะเอาไป WHERE อะไรก็แล้วแต่

Code
SELECT * FROM table WHERE (DATE_ADD(date_format(str_to_date(ColumnDate, '%d/%m/%Y'), '%Y-%m-%d'), INTERVAL -543 YEAR) BETWEEN '2014-11-01' AND '2014-11-30')







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-06 16:48:55 By : mr.win
 


 

No. 2



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

ลอง Test แล้วได้น่ะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-06 16:51:29 By : mr.win
 

 

No. 3



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


Code (PHP)
$sql ="select * from table 
where CONCAT(SUBSTRING(dte,7,4),'-',SUBSTRING(dte, 4,2),'-',SUBSTRING(dte,1,2)) 
BETWEEN 'datebegin' AND  'dateend' ";


datebegin และ dateend ต้องเป็นรูปแบบ yyyy-mm-dd นะครับ
และต้องเป็น ปีพศ ด้วยนะครับ หรือจะเป็น วัน เดือน ปี ตอน นำเข้า แล้วมาแปลง ใน php เอาก็ได้ครับ

ถ้าเป็นไปได้ เปลี่ยน type เป็น date ดีกว่าครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-06 16:54:57 By : Chaidhanan
 


 

No. 4



โพสกระทู้ ( 107 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณทุกความคิดเห็นครับ ผมจะลองทำตามครับผม ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-06 22:39:47 By : udorn555
 


 

No. 5



โพสกระทู้ ( 107 )
บทความ ( 0 )



สถานะออฟไลน์


จากการที่ผมทำตาม คุณ TC Admin บอกปรากฏว่าไม่แสดงผลอะไร ผมเขียน Code ผิดตรงไหนรบกวนดูให้หน่อยครับ
1. database ที่ออกแบบไว้
ข้อมูล database ที่ออกแบบไว้
2. codeที่เขียนไว้ มี 3 ไฟล์
2.1 ไฟล์ connect.php

Code (PHP)
<?
// connect.php
$hostname="localhost";
$username="root";
$password="root";
$dbname="go";
$connect=mysql_pconnect($hostname,$username,$password);
if(!$connect){
	echo "<h3> ERROR : ไม่พบDatabase </h3>";
	exit();
}
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
?>
2.2 ไฟล์  index.php
<? include "connect.php";?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form method="post" action="show.php">
	วันที่เริ่ม<input type="text" name="datebegin"/>
    วันสิ้นสุด	<input type="text" name="dateend"/>
	<input type="submit" name="submit" value="ค้นหา"/>
</form>

</body>
</html>
2.3 ไฟล์ show.php
<? include "connect.php";?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
	<? 
	$datebegin = $_POST['datebegin'];
 	$dateend = $_POST['dateend'];
	$sql="SELECT * FROM test WHERE (DATE_ADD(date_format(str_to_date(date_p, '%d/%m/%Y'), '%Y-%m-%d'), INTERVAL -543 YEAR)  BETWEEN 'datebegin' AND  '$dateend')";
	//$sql ="select * from test where CONCAT(SUBSTRING(date_p,1,2),'/',SUBSTRING(date_p,4,2),'/',SUBSTRING(date_p,7,4)) BETWEEN '$datebegin' AND  '$dateend' ";
	$result= mysql_db_query($dbname,$sql) or die(mysql_error());
	?>
    <table>
    	<tr>
        	<td>วันที่</td>
		</tr>            
    
    
	<? while($row=mysql_fetch_array($result)){ ?>
    	<tr>
        	<td><?=$row['date_p']?></td>
        </tr>
    <? }?>
	
</body>
</html>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-06 23:51:39 By : udorn555
 


 

No. 6



โพสกระทู้ ( 107 )
บทความ ( 0 )



สถานะออฟไลน์


ผลจากการที่ผมทำตามคุณ Chaidhanan บอกปรากฏว่า ข้อมูลออกแต่แสดงข้อมูลไม่ครบ เช่น
ในตารางมีข้อมูล
id date_p
1 01/10/2557
2 02/10/2557
3 01/11/2557
4 07/11/2557
ใส่ช่วงข้อมูลที่ต้องการค้น 01/10/2557 ถึง 01/11/2557 ปรากฏว่าข้อมูลแสดงเพียง 01/10/2557 และ 01/11/2557 ซึ่งขาด 02/10/2557 ไป ผมเขียนผิดยังไง รบกวนช่วยดูให้ด้วยครับ
ไฟล์ Code ที่ผมเขียนมี 3 ไฟล์ ดังข้างล่าง
1. ไฟล์ connect.php

Code (PHP)
<?
// connect.php
$hostname="localhost";
$username="root";
$password="root";
$dbname="go";
$connect=mysql_pconnect($hostname,$username,$password);
if(!$connect){
	echo "<h3> ERROR : ไม่พบDatabase </h3>";
	exit();
}
mysql_query("SET character_set_results=utf8");
mysql_query("SET character_set_client=utf8");
mysql_query("SET character_set_connection=utf8");
?>



2.ไฟล์ index.php

Code (PHP)
<? include "connect.php";?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
<form method="post" action="show.php">
	วันที่เริ่ม<input type="text" name="datebegin"/>
    วันสิ้นสุด	<input type="text" name="dateend"/>
	<input type="submit" name="submit" value="ค้นหา"/>
</form>

</body>
</html>


3.ไฟล์ show.php

Code (PHP)
<? include "connect.php";?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
	<? 
	$datebegin = $_POST['datebegin'];
 	$dateend = $_POST['dateend'];
	$sql ="select * from test where CONCAT(SUBSTRING(date_p,1,2),'/',SUBSTRING(date_p,4,2),'/',SUBSTRING(date_p,7,4)) BETWEEN '$datebegin' AND  '$dateend' ";
	$result= mysql_db_query($dbname,$sql) or die(mysql_error());
	?>
    <table>
    	<tr>
        	<td>วันที่</td>
		</tr>            
    
    
	<? while($row=mysql_fetch_array($result)){ ?>
    	<tr>
        	<td><?=$row['date_p']?></td>
        </tr>
    <? }?>
	
</body>
</html>

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-06 23:58:37 By : udorn555
 


 

No. 7



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


โค๊ด คิวรี่ คุณไปเอาวันขึ้นก่อน ครับ ซึ่งวัน มันมี ลำดับ ความสำคัญ น้อยกว่า เดือน
และ เดือน มีความสำคัญ น้อยกว่าปีครับ ซึ่งเป็นการเรียงจาก น้อยไปหามาก
ไม่สามารถ มาเปรียบเทียบ กับ หลักความสำคัญ มาก ไปหา น้อยครับ

01-01-2557 หลักความสำคัญ น้อยกว่า 01-02-2556 แม้ปีจะมากว่า
แต่หลักการเรียงอักษร แล้ว 01-01 น้อยกว่า 01-02 ครับ

Code (PHP)
<?php 
list($d1, $m1, $y1) = explode('/', $_POST['datebegin']);
$datebegin = date('Y-m-d', mktime( 0,0,0, $m1, $d1, $y1-543));
list($d2, $m2, $y2) = explode('/', $_POST['dateend']);
$dateend = date('Y-m-d', mktime( 0,0,0, $m2, $d2, $y2-543));
$sql ="select * from test where CONCAT((SUBSTRING(date_p,7,4)-543),'-',SUBSTRING(date_p,4,2),'-',SUBSTRING(date_p,1,2)) BETWEEN '$datebegin' AND '$dateend' ";
$result= mysql_db_query($dbname,$sql) or die(mysql_error());
?>



ปล. โค๊ดแบบ admin ก็ใช้ได้นะครับ แต่ผมไม่นิยมใช้ เพราะ วันที่ 29 กุมภา จะมีปัญหาวันที่ เปลี่ยนเป็นวันที่ 28 อะครับ
Code (SQL)
select DATE_ADD(date_format(str_to_date('29-02-2560', '%d-%m-%Y'), '%Y-%m-%d'), INTERVAL -543 YEAR) d
FROM `table_name` WHERE 1



ประวัติการแก้ไข
2014-11-07 08:50:18
2014-11-07 08:50:48
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-07 08:32:43 By : Chaidhanan
 


 

No. 8



โพสกระทู้ ( 107 )
บทความ ( 0 )



สถานะออฟไลน์


เย้ๆๆๆๆ ได้แล้วครับผม ขอบคุณ คุณChaidhanan มากๆ เลยครับ ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-09 19:21:28 By : udorn555
 


 

No. 9



โพสกระทู้ ( 107 )
บทความ ( 0 )



สถานะออฟไลน์


ขอเพิ่มเงื่อนไข อีกนิดครับ พอดีต้องการ ให้สามารถ เรียงลำดับ จากวันที่น้อยไปมาก มากไปน้อย ด้วยน่ะครับ ผมเขียน code เพิ่มดังนี้

Code (PHP)
$sql ="select * from go where CONCAT((SUBSTRING(date_p,7,4)-543),'-',SUBSTRING(date_p,4,2),'-',SUBSTRING(date_p,1,2)) BETWEEN '$datebegin' AND '$dateend'ORDER BY date_p desc ";


ปรากฏว่าผลออกมาเป็นแบบนี้

วันที่
02/10/2557
01/11/2557
01/10/2557

อยากให้มันเรียงเป็น
02/10/2557
01/10/2557
01/11/2557

ต้องทำอย่างไรครับผม รบกวนอีกครั้งครับ ^^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-10 07:47:33 By : udorn555
 


 

No. 10



โพสกระทู้ ( 107 )
บทความ ( 0 )



สถานะออฟไลน์


ลองทำหลายครังละไม่ได้ครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-13 08:22:40 By : udorn555
 


 

No. 11



โพสกระทู้ ( 9,587 )
บทความ ( 2 )



สถานะออฟไลน์


Code (SQL)
order by CONCAT((SUBSTRING(date_p,7,4)-543),'-',SUBSTRING(date_p,4,2),'-',SUBSTRING(date_p,1,2))

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-13 08:31:19 By : Chaidhanan
 


 

No. 12



โพสกระทู้ ( 107 )
บทความ ( 0 )



สถานะออฟไลน์


ได้ละครับ ขอบคุณ คุณChaidhanan มากๆครับผม ^___^
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2014-11-17 05:29:36 By : udorn555
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : mysql สอบถามเกี่ยวกับการ select ข้อมูลวันที่จากฐานข้อมูลมาแสดงว่าทำอย่างไร
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 04
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่