在我的數據庫中,「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