 |
รบกวนถามเรื่อง Search วันที่ โดยใช้ Between ครับ มันค้นหาไม่เจอ |
|
 |
|
|
 |
 |
|
ขอบคุณครับ แต่ไม่ขึ้นครับ
|
 |
 |
 |
 |
Date :
2011-07-10 14:21:22 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
echo strSQL;
SELECT * FROM animal WHERE Enable='T' AND (CreatedBy BETWEEN '' AND '') and ... ลอง echo strSQL มาแล้วครับ ค่า GET ไม่ส่งเข้าไป ช่วยหน่อยนะครับ = =+
|
 |
 |
 |
 |
Date :
2011-07-10 15:15:32 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ทำไมถึงอ่าน $_GET ครับ ลองใช้ $_POST ดูครับ
|
 |
 |
 |
 |
Date :
2011-07-10 16:32:05 |
By :
webmaster |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
echo strSQL;
SELECT * FROM animal WHERE Enable='T' and (CreatedBy BETWEEN '07-07-2011' and '07-07-2011') and (IsActive LIKE '%2%') and (CreatedBy LIKE '%07-07-2011%') and (CreatedBy LIKE '%07-07-2011%')
แต่สิ่งที่ค้นหามันไม่ขึ้นมาอะครับ
|
 |
 |
 |
 |
Date :
2011-07-10 16:34:02 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
$_POST ค้นหาไม่ขึ้นครับ SELECT * FROM animal WHERE Enable='T' and (CreatedBy BETWEEN '' and '') รับค่า POST ไม่เข้าครับ
|
 |
 |
 |
 |
Date :
2011-07-10 17:01:24 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ถ้าเก็บเป็น date นะครับดูข้อ 9 ได้เลย
http://web-programming-bookmark.blogspot.com/2010/11/mysql-complex-query.html
แต่เก็บเป็น varchar ปกติควรจะจัดเก็บ string ให้เป็นแบบนี้ครับ yyyy-mm-dd
แต่เก็บเป็นแบบ
07-07-2011 หรือ dd-mm-yyyy แบบนี้จะต้องแปลงกลับให้เป็น 2011-07-07 ทั้งหมดก่อน
(yyyy-mm-dd ทั้ง field db และ ข้อมูลเปรียบเทียบแล้วค่อยมาเปรียบเทียบกันครับ)
เพราะการเปรียบเทียบแบบ string ตามหลักแล้วจะต้องนับจากหลักแรกสำคัญสุด และเปรียบเทียบหลักที่สองต่อ...
และเพื่อให้เปรียบเทีบกับวันที่สองวันที่ได้ ความยาว string จะต้องเท่ากันด้วยเพื่อจะได้เปรียบเทียบตรงหลักกัน
อย่างเช่น 2011-07-07 กับ 2011-8-8 จะต้องแปลงเป็น 2011-08-08 ก่อนที่จะมาเปรียบเทียบกันครับ
ดังนั้นต้องหา function
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
แปลงค่าฟิลด์และตัวแปรให้ถูกต้องตามนี้ด้วยครับ
|
ประวัติการแก้ไข 2011-07-10 17:03:01
 |
 |
 |
 |
Date :
2011-07-10 17:01:57 |
By :
num |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ในฐานข้อมูลผมเป็น ชื่อฟิวส์ CreatedBy varchar(255) ในฟิวส์เก็บข้อมูล 16-06-2011 ที่นี้ลองกดปฏิทินเพื่อค้นหาระหว่างวันที่ 16-06-2011 ถึง 16-06-2011 ก็ไม่ขึ้นครับ
Code (PHP)
$strSQL = "SELECT * FROM animal WHERE Enable='T' and (CreatedBy BETWEEN '".$_GET['dateInput']."' and '".$_GET['dateInput2']."') ";
if($_GET["txtKeyword"]!= "")
{
$strSQL .= " and (ThaiName LIKE '%".$_GET["txtKeyword"]."%' or EngName LIKE '%".$_GET["txtKeyword"]."%') ";
}
if($_GET["IsActive"]!= "")
{
$strSQL .= " and (IsActive LIKE '%".$_GET["IsActive"]."%') ";
}
if($_GET["txtKeyword2"]!= "")
{
$strSQL .= " and (Created LIKE '%".$_GET["txtKeyword2"]."%') ";
}
if($_GET["txtKeyword3"]!= "")
{
$strSQL .= " and (Updated LIKE '%".$_GET["txtKeyword3"]."%') ";
}
if($_GET["dateInput"]!= "")
{
$strSQL .= " and (CreatedBy LIKE '%".$_GET["dateInput"]."%') ";
}
if($_GET["dateInput2"]!= "")
{
$strSQL .= " and (CreatedBy LIKE '%".$_GET["dateInput2"]."%') ";
}
$objQuery = mssql_query($strSQL) or die ("Error Query [".$strSQL."]") ;

|
 |
 |
 |
 |
Date :
2011-07-10 17:32:04 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เป็น mssql หรือครับ ก็คล้ายๆ กันครับ
ถ้า createby เก็บ 01-01-2011 และต้องการเปลี่ยนเป็น 2011-01-01 จะเขียนแบบนี้ครับ
$date1 = '2011-01-01'; ถ้าข้อมูลไม่ใช่ yyyy-mm-dd ต้องแปลงให้เหมือนกัน
$date2 = '2011-02-02';
$sql = "
select * from animal where
SUBSTRING(CreatedBy,6,4)+'-'+ SUBSTRING(CreatedBy,3,2)+'-'+ SUBSTRING(CreatedBy,0,2) >= '$date1'
AND
SUBSTRING(CreatedBy,6,4)+'-'+ SUBSTRING(CreatedBy,3,2)+'-'+ SUBSTRING(CreatedBy,0,2) >= '$date2'
";
|
ประวัติการแก้ไข 2011-07-10 18:27:00
 |
 |
 |
 |
Date :
2011-07-10 18:26:10 |
By :
num |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณทุกคนที่ช่วยเหลือนะครับ แต่ยังไม่ขึ้นเลยครับ เหลือแต่แค่ค้นหาระหว่างวันที่นี้ถึงวันที่นี้เท่านั้นเอง
ผมลองปรับ yyyy-mm-dd แล้วนะครับ มันเป็น 20112011-07-7 แต่ถ้า yy-mm-dd มันก็เป็น 2011-07-7
- เราไม่สมควรเก็บวันที่รวมกับเวลาในช่องฟิวส์เดียวกันใช่ไหมครับ
|
 |
 |
 |
 |
Date :
2011-07-10 20:17:03 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เก็บผิด type ก็ปวดใจแบบนี้แหละครับ date ก็ควรเก็บเป็น date
|
 |
 |
 |
 |
Date :
2011-07-10 20:36:51 |
By :
PlaKriM |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เก็บเป็น date แล้วครับ แต่ error
Warning: mssql_query() [function.mssql-query]: message: Conversion failed when converting date and/or time from character string. (severity 16) in C:\AppServ\www\1799\animal_show.php on line 122
Warning: mssql_query() [function.mssql-query]: Query failed in C:\AppServ\www\1799\animal_show.php on line 122
Error Query [SELECT * FROM animal WHERE Enable='T' AND (CreatedBy BETWEEN '04-07-2011' AND '20-07-2011') and (IsActive LIKE '%1%') ]
|
 |
 |
 |
 |
Date :
2011-07-10 20:58:36 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
เก็บเป็น date แล้วยังไม่พอครับ ต้องแปลงให้เป็น Y-m-d ด้วย
SELECT * FROM animal WHERE Enable='T' AND (CreatedBy BETWEEN '2011-07-04' AND '2011-07-20')
|
 |
 |
 |
 |
Date :
2011-07-10 21:25:10 |
By :
PlaKriM |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
 |
|
|
 |
 |
|
ขอบคุณครับ ได้แล้วครับ
|
 |
 |
 |
 |
Date :
2011-07-10 23:05:00 |
By :
MyZeus |
|
 |
 |
 |
 |
|
|
 |
 |
|
 |
 |
|
|