0

我有一个带有日期选择器的表,我正在尝试添加当前日期选项,除非该日期已经存在行。

这是它的外观:

在此处输入图像描述

今天是 25 日,但它显示 20 日的日期,因为其中存在包含 07/20/2013 日期的行。我该怎么做才能显示当前日期?

这是代码

<div class="lookup">
<form action="index.php" method="get">
<select name="exam_date" ONCHANGE="location = this.options[this.selectedIndex].value;" id="type" class="neutral">
<?php
$sql_gdate    = "SELECT distinct pat_date from patients ORDER BY pat_date DESC";
$result_gdate = mysql_query($sql_gdate);
while ($row_gdate = mysql_fetch_assoc($result_gdate)) {
    echo '<option value="?exam_date=' . $row_gdate['pat_date'] . '"';
    IF ($exam_date == $row_gdate['pat_date']) {
        echo 'selected="selected"';
    } else {
        echo '';
    }
    echo '>' . $row_gdate['pat_date'] . '</option>';
}
?>
</select>
</form> 
</div>
4

2 回答 2

1
select dt from
(
SELECT distinct pat_date as dt from patients 
union
SELECT CURRENT_DATE() from dual
)
ORDER BY dt DESC
于 2013-07-25T13:42:43.787 回答
0

您可以使用以下 SQL 修改您的表,以便正确存储日期 -

ALTER TABLE patients
    ADD COLUMN pat_date_new DATE NOT NULL;
UPDATE patients SET pat_date_new = STR_TO_DATE(pat_date,'%m/%d/%Y');
-- NOW CHECK THAT THE VALUES ARE STORED CORRECTLY BEFORE DROPPING THE OLD COLUMN

ALTER TABLE patients
    DROP COLUMN pat_date,
    CHANGE COLUMN pat_date_new pat_date DATE NOT NULL;

一旦日期以正确的格式存储,您将能够使用之前发布的查询 -

SELECT DISTINCT pat_date FROM patients UNION SELECT CURRENT_DATE ORDER BY pat_date DESC

您需要更改从日期选择器收到的日期格式。您可以在 PHP 或 SQL 中轻松完成此操作 -

INSERT INTO `patients` (`pat_date`) VALUES(STR_TO_DATE('07/25/2013','%m/%d/%Y'));

注意:您不应该使用已弃用的 mysql_* 函数。使用mysqli_*PDO

于 2013-07-25T14:42:20.233 回答