gpt4 book ai didi

php - 使用sql将月份数字转换为月份名称

转载 作者:行者123 更新时间:2023-11-29 12:42:07 25 4
gpt4 key购买 nike

在我的数据库中,“monthnumber”(varchar)列表示月份。 (1 = 一月,12 = 十二月)现在我需要回显月份名称而不是数字。

我已经找到了一些示例,似乎使用 DateName( ) 是执行此类操作的正确方法。但即使有了这些例子,它对我来说仍然不起作用。显然我错过了一些东西,但我不知道是什么......

.htaccess 文件:

RewriteRule ^example/([^/]+)/([^/]+)$ test?year=$1&monthnumber=$2 [L,QSA]

Html/php:

<?php
$year= $_GET['year'];
$monthnumber= $_GET['monthnumber'];

$sql = "SELECT DISTINCT DateName( month, DateAdd( month , 'monthnumber' , -1 ) ) AS 'monthname', monthnumber, year FROM `exampletable` WHERE year = :year AND monthnumber = :monthnumber";

$stmt = $pdo->prepare($sql);
$stmt->bindParam(":year", $year);
$stmt->bindParam(":monthnumber", $monthnumber);
$stmt->execute();

if($result = $stmt->fetch(PDO::FETCH_ASSOC))
{
?>

<?php echo strtolower($result['monthname']);?> <?php echo $result['year'];?>

<?php
}// end if
else {
echo '0 results';
}// end else
?>

一些行示例(年月号)

(2014年8月)、(2014年7月)、(2013年8月)、...

当我尝试打开 example.com/2014/8 时,它给我“0 结果”而不是“2014 年 8 月”,而我的旧代码(月份显示为数字)有效:

$sql = "SELECT DISTINCT monthnumber, year FROM `exampletable` WHERE year = :year AND monthnumber = :monthnumber";

最佳答案

这是您的查询:

SELECT DISTINCT DateName( month, DateAdd( month , 'monthnumber' , -1 ) ) AS monthname,
monthnumber, year
FROM `exampletable`
WHERE year = :year AND monthnumber = :monthnumber

它使用 SQL Server 中的函数,因此我怀疑这是否适用于 MySQL。

您最好只使用 case 语句:

select distinct (case when monthnumber = '1' then 'January'
when . . .
when monthnumber = '12' then 'December'
end) as monthname
from exampletable
where year = :year and monthnumber = :monthnumber;

您还可以通过构造日期并使用 monthname() 来完成此操作:

select distinct monthname(date(concat_ws('-', year, monthnumber, '01'))) as monthname
from exampletable
where year = :year and monthnumber = :monthnumber;

注意:您应该只对日期和字符串常量使用单引号。切勿在列名称周围使用单引号,这只会导致问题。

关于php - 使用sql将月份数字转换为月份名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25962144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com