2010-11-08 122 views
2

我通過文本字段將出生日期插入表中。 在這裏,我需要一個MySQL查詢,檢查當前月份和當前日期與數據庫中匹配的任何日期。 沒有必要檢查一年,因爲這是爲了顯示生日提醒, 任何人都可以有一個SQL查詢的想法在一個查詢中做到這一點..在這裏我用PHP和MySQL。由於提前PHP MySQL日期比較

我的示例代碼是:

<?php 
$con = mysql_connect("localhost","root",""); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("test", $con); 

$my_birth_date = "2010-11-08"; 

$result = mysql_query("SELECT * FROM mydate WHERE DAYOFMONTH($my_birth_date) = DAYOFMONTH(NOW()) AND MONTH($my_birth_date) = MONTH(NOW()) 
"); 


while($row = mysql_fetch_array($result)) 
    { 
    echo $row['my_name'] . " " . $row['my_dob']; 
    echo "<br />"; 
    } 

mysql_close($con); 
?> 

我的表架構是: MY_NAME VARCHAR(50) my_dob日期

日期被存儲在類似這樣的格式表:2010年01期-20(年 - 月 - 日) 現在它顯示一個沒有任何記錄的空白頁面,即使我有記錄匹配。 任何一個可以給一些建議

+0

請提供CREATE TABLE語句。如果存儲日期,則該列應該使用DATETIME或DATE數據類型,而不是基於字符串,因爲在能夠進行日期操作/比較之前,必須將其轉換爲與日期相關的數據類型。 – 2010-11-08 17:00:58

+0

日期如何存儲在數據庫中? – Brady 2010-11-08 17:01:17

回答

1

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html

你可以找到所有MySQL中的日期&時間的函數。你可能會想使用DAYOFMONTH和月功能比較:)

因此,像:

SELECT * FROM table WHERE DAYOFMONTH(birthday) = DAYOFMONTH(NOW()) AND MONTH(birthday) = MONTH(NOW()) 

可能有一些更有效的方式來做到這一點,但是這是我第一次嘗試!希望有所幫助!

+0

Hai Gazlion ...感謝您的回覆 – SK0004 2010-11-08 17:20:15

+0

@ SK0004 - NP;) – Gazillion 2010-11-08 17:21:03

+0

您可能需要使用此信息編輯原始問題。你有錯誤嗎?你的表模式是什麼樣的? – Gazillion 2010-11-08 17:24:44

0

您的示例代碼應返回「mydate」表中的所有記錄。

直接在服務器上嘗試查詢(在終端或像phpMyAdmin這樣的應用程序)來檢查它是否返回數據。使用mysql_error來調試你的代碼。

實施例:

<?php 
$link = mysql_connect("localhost", "mysql_user", "mysql_password"); 

mysql_select_db("nonexistentdb", $link); 
echo mysql_errno($link) . ": " . mysql_error($link). "\n"; 

mysql_select_db("kossu", $link); 
mysql_query("SELECT * FROM nonexistenttable", $link); 
echo mysql_errno($link) . ": " . mysql_error($link) . "\n"; 
?> 

mysql_error : php.net

然後你應該看到它崩潰的地方。