我在获取数据时遇到问题。日期保存在VARCHAR中,这意味着它将字符串化。我想在表中选择从01-01-2019到今天的数据。所以我在哪里上课有问题。
请在下面的代码中尝试获取数据,但仍无法正常工作。我正在使用STR_TO_DATE(holiday_date, '%d-%m-%Y')
来将格式字符串更改为日期列。
<?php
echo $edate=date('d-m-Y');
$query="SELECT * FROM holidays where STR_TO_DATE(holiday_date, '%d-%m-%Y')='$edate' ORDER BY STR_TO_DATE(holiday_date, '%d-%m-%Y') asc ";
$stmt=$conn->prepare($query);
$stmt->execute();
$i=1;
while ($result = $stmt->fetch()) {
?>
<tr class="holiday-completed">
<td><?php echo $i;?></td>
<td style="display: none;"><?php echo $result['id'];?></td>
<td><?php echo $result['title'];?></td>
<td><?php echo $result['holiday_date'];?></td>
<td>
<?php $s=$result['holiday_date'];
$sdate = strtotime($s);
echo date('l',$sdate);
?>
</td>
答案 0 :(得分:3)
这样的查询,然后:
SELECT *
FROM holidays
WHERE STR_TO_DATE(holiday_date, '%d-%m-%Y') BETWEEN STR_TO_DATE('01-01-2019', '%d-%m-%Y') AND NOW()
ORDER BY STR_TO_DATE(holiday_date, '%d-%m-%Y') asc
但实际上,您应该整理数据;
UPDATE table SET holiday_date_PROPER = STR_TO_DATE(holiday_date, '%d-%m-%Y')
之类的查询以进行预填充答案 1 :(得分:0)
您可以将以下SQL与BETWEEN条件一起使用。使用CURRENT_DATE()
获取今天的日期。
$sql = "SELECT
*
FROM
holidays
WHERE
holiday_date BETWEEN STR_TO_DATE('$edate', '%Y-%m-%d') AND CURRENT_DATE()
ORDER BY STR_TO_DATE(holiday_date, '%Y-%m-%d') ASC";