PHP / MySQLi:将SET lc_time_names和DATE_FORMAT()转换成mysqli查询?

时间:2009-04-20 16:33:15

标签: php mysql database mysqli

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

$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函数将日期从'birthdate'列格式化为更友好的显示。现在,我想用西班牙语显示月份全名,所以我想在查询中插入SET lc_time_names = 'es_ES' ..

我该怎么办?我可以将SET lc_time_names添加到$ check_sql变量吗?

谢谢!

3 个答案:

答案 0 :(得分:5)

$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();
        }

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:-2)

SET lc_time_names = 'es_PE';
SELECT *, DATE_FORMAT(fecha,'%d de') AS dia,
DATE_FORMAT(fecha,'%M  %Y') AS mes
 FROM t_eventos4