-
05.05.2014, 20:43 #1
Mysql SELECT * aber eine Spalte formatieren
Guten Abend alle zusammen!
Ich möchte alle Spalten einer Mysql-Tabelle auslesen aber eine Spalte (Datum) formatieren. Mein Versuch:
SELECT *, DATE_FORMAT(Datum, "%d.%m.%Y") AS Datum
Dann bekomme ich aber 2x die Spalte Date. Alle Spalten einzeln aufzählen möchte ich vermeiden da das ziemlich viele sind ^^ Ich bräuchte etwas wie SELECT * WITHOUT(Datum) gibt es etwas in der Art?Geändert von Benzol (05.05.2014 um 20:43 Uhr)
-
05.05.2014, 21:09 #2
AW: Mysql SELECT * aber eine Spalte formatieren
mittels eines einfachen SQL-Befehls ist das soweit ich weiß leider nicht möglich, allerdings könntest du dir da locker was mit PHP basteln, bzw. eine temporäre Tabelle/View erstellen, ohne diese eine Spalte.. ansonsten würde ich die doppelte Datumspalte einfach ignorieren?
-
The Following 2 Users Say Thank You to beeef For This Useful Post:
-
14.05.2014, 01:16 #3
AW: Mysql SELECT * aber eine Spalte formatieren
Hallo Benzol,
Ich habe folgende Lösung für dich
PHP-Code:<?php
mysql_connect("localhost", "mysql_benutzer", "mysql_passwort");
mysql_select_db("deinetabelle");
$sql_columns = 'SHOW COLUMNS FROM deine_tabelle';
$columns = mysql_query($sql_columns);
$columns_arr = array();
$blacklist = array('Datum'); // Hier dürfen auch mehr Spalten stehen, so bleibt dieses Skript recht dynamisch
while ($column = mysql_fetch_array($columns)) {
if (in_array($column[0], $blacklist)) { continue; }
arrray_push($columns_arr, $column[0]);
}
$sql_build_columns = 'SELECT ';
foreach ($columns_arr as $c) {
$sql_build_columns .= $c.', ';
}
$sql_build_columns = 'DATE_FORMAT(Datum, "%d.%m.%Y") AS Datum ';
$sql_build_columns = 'FROM deine_tabelle';
$table_data = mysql_query($sql_build_columns);
?>Geändert von KillaVanilla (14.05.2014 um 01:16 Uhr)
-
The Following 2 Users Say Thank You to KillaVanilla For This Useful Post:
Benzol (14.05.2014), ThunderStorm (16.10.2014)
-
14.05.2014, 09:33 #4
AW: Mysql SELECT * aber eine Spalte formatieren
CREATE TEMPORARY TABLE TempTable SELECT *, DATE_FORMAT(Datum, "%d.%m.%Y") AS DatumFormatiert FROM X;
ALTER TABLE TempTable DROP Datum;
SELECT * FROM TempTable
-
The Following 2 Users Say Thank You to Nuebel For This Useful Post:
Benzol (14.05.2014), ThunderStorm (16.10.2014)
-
14.05.2014, 10:34 #5Gelöschter BenutzerGast
AW: Mysql SELECT * aber eine Spalte formatieren
Die ganzen mysql_* Funktionen sind deprecated, siehe hier: PHP: Deprecated features in PHP 5.5.x - Manual und deine Funktion ist auch ziemlich lang / undynamisch programmiert...
Mein try:
PHP-Code:$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
function excludeFieldAndFormat($table, $ignoredFields, $format) {
global $mysqli;
if(!is_array($ignoredFields)) $blackListed = array($ignoredFields);
$columns = $mysqli->query(sprintf('SELECT * FROM `%s`', $table))->fetch_fields();
$blacklisted = $ignoredFields;
$fields = '';
foreach($columns as $column) {
if(!in_array($column->name, $blacklisted)) { $fields .= sprintf('%s, ', $column->name); }
}
return sprintf('SELECT %s%s FROM %s', $fields, $format, $table);
}
echo excludeFieldAndFormat('test', 'date', 'DATE_FORMAT(date, "%d.%m.%Y") AS date'); //SELECT id, name, age, DATE_FORMAT(date, "%d.%m.%Y") AS date FROM test
-
The Following User Says Thank You to Gelöschter Benutzer For This Useful Post:
Benzol (14.05.2014)
-
14.05.2014, 17:05 #6
- Registriert seit
- 28.10.2011
- Beiträge
- 625
Thanked 279 Times in 168 PostsAW: Mysql SELECT * aber eine Spalte formatieren
Nicht nur das(wie bereits gesagt) mysql_* nicht mehr verwendet werden sollte, ist in MySQL so einiges möglich.
Es wird aber hier nirgends gefragt, welcher Datentyp "Datum" überhaupt hat.
Da du eine weitere Definition erstellst like "XX AS XXX", musst du entweder:
- Die Spalten seperat ansprechen:
PHP-Code:SELECT `spalte1`, `spalte2`, DATE_FORMAT(Datum, "%d.%m.%Y") AS `Datum`
PHP-Code:SELECT `spalte1`, `spalte2`, DATE_FORMAT(Datum, "%d.%m.%Y") AS `tabelle`.`Datum`
-
The Following User Says Thank You to Bubble Gum For This Useful Post:
Benzol (14.05.2014)
-
14.05.2014, 21:30 #7
AW: Mysql SELECT * aber eine Spalte formatieren
"Datum" ist ein Linux Timestamp. Ich möchte es aber als Tag.Monat.Jahr ausgeben, daher auch das DATE_FORMAT.
Etwas mit PHP zu machen wie KillaVanilla und Finn vorgeschlagen haben darauf bin ich in diversen Foren schon gestoßen. Das gefällt mir aber nicht so gut weil dann ja 2 Abfragen an Mysql gehen = schlechtere Performance?! Da hier ein paar verschiedene Lösungen gepostet wurden würde mich interessieren welche die performanteste ist. Und danke schon mal an alle für eure guten AntwortenGeändert von Benzol (14.05.2014 um 21:32 Uhr)
-
16.05.2014, 16:26 #8Gelöschter BenutzerGast
AW: Mysql SELECT * aber eine Spalte formatieren
fetch_fields() cachen, dann ist es nur 1 Query.
Neues Memcache Objekt erstellen:
PHP-Code:$memcache = new Memcache('localhost');
PHP-Code:$keyName = sprintf('columncache_%s', $table);
$columns = ($memcache->get($keyName) ? $memcache->set($keyName, $mysqli->query(sprintf('SELECT * FROM `%s`', $table))->fetch_fields(), 300) : $memcache->get($keyName);
Ansonsten mal PHP: Caching queries - Manual anschauen
-
17.05.2014, 00:25 #9
AW: Mysql SELECT * aber eine Spalte formatieren
Kannst du kurz erklären was Memcache macht?
Geändert von KillaVanilla (17.05.2014 um 00:25 Uhr)
-
17.04.2017, 12:20 #10
AW: Mysql SELECT * aber eine Spalte formatieren
Auch wenn das Thema schon etwas älter ist, finde ich an dieser Stelle eine kurze Erklärung sinnvoll, für Leute die via Suche hier landen:
MemCache ist ein Cache-Server, in dem Daten abgelegt werden können. Dazu definiert man einen Schlüssename als String, und kann dort beliebige Objekte ablegen. Beispielsweise einen Array oder die Instanz eines Models (Klasse). Meist nutzt man sie für relativ aufwändige Rechenoperationen. Das können Kalkulationen von Statistiken sein, wie beispielsweise die Anzeige der insgesamt erstellten Beiträge auf der Startseite. Oder Datenbankabfragen, weil man so Last von der Datenbank nimmt, was gerade bei großen Datenbanken bzw. Tabellen die Leistung erhöht. So spart man sich nämlich, dass diese Operationen unzählige Male ausgeführt werden.
Im Krieg gibt es keine Gewinner, nur Verlierer!
Ähnliche Themen
-
Xampp Service mysql is not installed Service mysql is not started
Von Essah im Forum WebentwicklungAntworten: 8Letzter Beitrag: 22.03.2014, 22:57 -
[PHP] Update Select Problem
Von ZarneXxX im Forum PHPAntworten: 9Letzter Beitrag: 18.09.2013, 16:00 -
C# webBrowser dropdown select
Von Bl1zz4rD im Forum .NetAntworten: 2Letzter Beitrag: 05.04.2013, 12:08 -
2 Datenbanken, aber nur eine auswählen?
Von Devon im Forum PHPAntworten: 4Letzter Beitrag: 21.01.2013, 02:24 -
[Excel] Ganze Spalte Addieren
Von Minecraft im Forum SoftwareAntworten: 1Letzter Beitrag: 11.11.2012, 15:49
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.