【问题标题】:MONTHNAME in Portuguese MYSQL葡萄牙语 MYSQL 中的 MONTHNAME
【发布时间】:2019-05-26 09:05:50
【问题描述】:

我有一个巨大的查询(在一个 PHP 文件中),它给了我一些日期的月份名称:

CASE A.STATUS
WHEN 'Cancel' THEN LEFT(MONTHNAME(DT_CANCEL),3)
WHEN 'About to cancel' THEN LEFT(MONTHNAME(DATA_REGISTER),3)

END AS MONTH_CANCEL,

有没有办法在 MONTHANAME 中插入我的语言?

类似:

WHEN 'Cancel' THEN SET LANGUAGE Portuguese LEFT(MONTHNAME(DT_CANCEL),3)

我不想为每个月编写案例以将“Dec”转换为“Dez”等等,这将花费太长时间。

【问题讨论】:

标签: mysql sql string date


【解决方案1】:

我绞尽脑汁想着一张西班牙月份的图表。解决了我的问题。

try{    
    $conn = new PDO($dsn, DB_USER, DB_PASS, $opt);
    $conn->exec("SET lc_time_names = 'pt_BR'");
}catch (PDOException $e) {
    print "Error! " . $e->getMessage() . "<br/>";
    die();
}

【讨论】:

    【解决方案2】:

    不幸的是,在 MySQL 中,这不能在查询中动态完成。

    来自文档:

    用于月份名称的语言由lc_time_names 系统变量控制。

    您需要单独的 SQL 命令来更改设置:

    SET lc_time_names = 'pt_PT';
    SELECT MONTHNAME('2018-12-28') AS 'Month';
    

    lc_time_names 的值在 MySQL 会话的生命周期内保持不变。

    【讨论】:

      【解决方案3】:

      在运行查询之前运行以下查询:

      SET lc_time_names = 'pt_PT';
      

      【讨论】:

        猜你喜欢
        • 2018-05-10
        • 2016-01-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 2013-01-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多