在我的数据库中,“monthnumber”(varchar)列表示月份。 (1 = 1月,12 = 12月) 现在我需要回显月份的名称而不是数字。使用sql将月份编号转换为月份名称
我已经找到了一些例子,似乎使用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),(8 2013),...
当我尝试打开example.com/2014/8
,它给我的 “0结果”,而不是 “2014年8月”,而我的旧代码(每月以数字显示)工作原理:
$sql = "SELECT DISTINCT monthnumber, year FROM `exampletable` WHERE year = :year AND monthnumber = :monthnumber";
感谢您的回答!我用monthname(),它工作正常。还有一个问题:该代码是否也支持其他语言?假设我想用法语或德语显示月份的名称?或者我需要使用'case'语句吗? – Stan 2014-09-21 18:20:56
@Stan。 。 。使用'case'语句。它应该以数据库的语言返回值,并且您可能没有太多的控制权。 – 2014-09-21 18:35:10