【问题标题】:PHP/MySQLi: SET lc_time_names and DATE_FORMAT() into a mysqli query?PHP/MySQLi:将 lc_time_names 和 DATE_FORMAT() 设置为 mysqli 查询?
【发布时间】:2010-10-20 14:56:54
【问题描述】:

我使用下面的代码从数据库中的表中检索数据:

$check_sql = 'SELECT personID, name, DATE_FORMAT(persons.birthdate, "%d de %M, %Y"), birthplace, countryID FROM persons WHERE personID = ?';
    if ($stmt->prepare($check_sql)) {
        $stmt->bind_param('i', $pid);
        $stmt->bind_result($personDB, $name, $birthdate, $birthplace, $countryID);
        $stmt->execute();
        $stmt->fetch();
    }

如您所见,同时我使用 DATE_FORMAT() MySQL 函数将“生日”列中的日期格式化为更友好的显示。现在,我想用西班牙语显示月份全名,所以我想在查询中插入SET lc_time_names = 'es_ES'..

我该怎么做???我可以在 $check_sql 变量中添加SET lc_time_names 吗?

谢谢!!

【问题讨论】:

    标签: php mysql database mysqli


    【解决方案1】:
    $mysqli = new mysqli("localhost", "my_user", "my_password", "world");
    $mysqli->query("SET lc_time_names = 'es_ES'");
    $check_sql = 'SELECT personID, name, DATE_FORMAT(persons.birthdate, "%d de %M, %Y"), birthplace, countryID FROM persons WHERE personID = ?';
            if ($stmt = $mysqli->prepare($check_sql)) {
                    $stmt->bind_param('i', $pid);
                    $stmt->bind_result($personDB, $name, $birthdate, $birthplace, $countryID);
                    $stmt->execute();
                    $stmt->fetch();
            }
    

    【讨论】:

      【解决方案2】:

      另一种选择是返回原始日期/时间,然后在 PHP 中对其进行格式化。

      在格式化日期之前,可以使用 PHP 中的 setlocale() 函数来获取西班牙语输出。

      这有一个额外的好处,那就是不在 mysql 中运行函数,这可能会更慢。

      【讨论】:

        【解决方案3】:
        SET lc_time_names = 'es_PE';
        SELECT *, DATE_FORMAT(fecha,'%d de') AS dia,
        DATE_FORMAT(fecha,'%M  %Y') AS mes
         FROM t_eventos4
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-09-23
          • 2015-05-05
          • 2016-02-26
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 2014-05-21
          相关资源
          最近更新 更多