【问题标题】:How to select month from sql date in column where month is currentmonth如何从月份为当前月份的列中的sql日期中选择月份
【发布时间】:2019-11-09 16:15:54
【问题描述】:

我需要创建一个 select 语句,从客户 WHERE 返回 Voornaam、Tussenvoegsel、Achternaam(我的数据库中有一个名为 Geboortedatum 的列,在这里我有一个日期。我需要上面提到的所有值,其中 Geboortedatum 是与$currentmonth 相同。我已经有一个返回currentmonth 的json 函数。)我不知道在WHERE 后面放什么。 需要明确的是:我需要 Voornaam、Tussenvoegsel 和 Achternaam,其中我的餐桌客户的 Geboortedatum(DD-MM-YYYY) 月份与 $currentmonth 相同。

$conn = new mysqli("localhost", "root", "Habt2002", "fca");

if ($_POST['key'] == 'bijnaJarig') {
    $currentmonth = $conn->real_escape_string($_POST['currentmonth']);
    $sql = $conn->query("SELECT Voornaam, Tussenvoegsel, Achternaam, Telefoonnummer, Email 
                        FROM customer 
                        WHERE ??????? ");
    $data = $sql->fetch_array();
    $jsonArray = array(
        'voornaam' => $data['Voornaam'],
        'tussenvoegsel' => $data['Tussenvoegsel'],
        'achternaam' => $data['Achternaam'],
        'telefoonnummer' => $data['Telefoonnummer'],
        'emailbijnajarig' => $data['Email']
    );

    exit(json_encode($jsonArray));
}

【问题讨论】:

  • 您使用的是哪个 DBMS? MySQL?
  • 当前年份?您不想在结果集中获得 2018 年 6 月以来的客户,是吗?
  • Geboortedatum 是定义为 DATETIME 还是 DATE 列,还是像 VARCHAR 这样的某种字符串,因为 DD-MM-YYYY 不是标准的 DATE 格式
  • 我正在使用 MySQL。这是我的数据库imgur.com/a/PNhngUm
  • Geboortedatum 被定义为日期,抱歉我可能对@RiggsFolly 的格式有误

标签: php html sql json


【解决方案1】:

使用MONTH()CURDATE() MySQL 函数你可以做到

WHERE MONTH(Geboortedatum) = MONTH(CURDATE())

您可能还想添加YEAR() 支票

AND YEAR(Geboortedatum) = YEAR(CURDATE())

除非您想要这个月多年的所有数据

第二期

您只从结果集中获取一行,您要么需要遍历结果集中的n 行,要么使用fetch_all() 方法。在这种情况下,fetch_all() 似乎是最简单的方法。

$conn = new mysqli("localhost", "root", "xxxx", "fca");
if (!$conn) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

if ($_POST['key'] == 'bijnaJarig') {
    
    $sql = $conn->query("SELECT Voornaam, Tussenvoegsel, Achternaam, Telefoonnummer, Email 
                        FROM customer 
                        WHERE MONTH(Geboortedatum) = MONTH(CURDATE())");
    $all_rows= $sql->fetch_all();

    echo json_encode($all_rows);
}

【讨论】:

  • 该死,按几下键就打败了我 :)
  • 谢谢,这正是我想要的。 (我需要这个月多年来的所有数据,因为我需要列出几乎要过生日的用户)
  • 我现在遇到的问题是这只返回 1 个用户。有什么解决办法吗?
  • [link](imgur.com/a/nIZB2UI ) 这是我的记录,这是它返回的内容link
猜你喜欢
  • 2021-12-27
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多