簡體   English   中英

同時格式化多個MySQL日期字段

[英]Formating multiple mySQL date fields at the same time

我有一個包含12個時間戳列和3個其他字段的表。 我無法更改時間戳列上的字段類型。

我需要將所有15個字段顯示為m / d / y。 有沒有一種方法可以同時格式化所有文件而不必對每個文件都應用DATE_FORMAT? 我寧願不必做

SELECT DATE_FORMAT(field, '%c/%e/%y') AS field
如果可能的話,每一個。

我使用的是mySQL和PHP,我不在乎轉換發生的位置。

您是否考慮過使用MDB2或PDO之類的數據庫層來為您轉換類型? MDB2具有日期類型,顯示為YYYY-MM-DD格式,但可以很容易地用strftime和strtotime轉換為m / d / y。

使用MDB2的示例:

$dsn = "mysql://user@pass/db"; (not sure about DSN format, you might have to poke the MDB2 documentation)
$connection = MDB2::connect ($dsn);
$connection->loadModule ("Extended");
$rows = $connection->getAll ("your query", array ('date', ...), $parameters, array (paramater-types), MDB2_FETCHMODE_OBJECT);

if (MDB2_Driver_Common::isError ($rows)) throw new Exception ("Error!");
else { foreach ($rows as $row) { ...Do something... } }

您可以在InstallationWiki的MDB2上找到有關以這種方式使用MDB的更多文檔。 另外,您還將找到MDB2數據類型的列表以及它們映射到的顯示值。 此外, MDB2_Extended的文檔將是一個很好的信息來源。

編輯:顯然,您必須分別在每一行上使用strftime和strtotime。 如果切換MDB2_FETCHMODE_OBJECTMDB2_FETCHMODE_ORDEREDMDB2_FETCHMODE_ASSOC上面,你大概可以使用foreach循環對所有需要被重新格式化行的運行的strftime和的strtotime。

您可以在php中編寫一個簡單的日期轉換例程,例如:

function mysql2table($date) {
    $new = explode("-",$date);
    $a=array ($new[2], $new[1], $new[0]);
return $n_date=implode("-", $a);
}

我從這里偷走的: http : //www.daniweb.com/code/snippet736.html#

然后只需遍歷SQL列結果,檢查該值是否為日期並將其轉換。

我認為這是不可能的,查詢直到返回結果才知道列是什么,您必須告訴它更改每個日期時間的格式。

馬特

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM