Benutzer-Werkzeuge

Webseiten-Werkzeuge

Übersetzungen dieser Seite:
de

programming:mysql

MySQL

Variablen

set @d="2018-06-14";
set @st=CONCAT(@d," 00:00:00");
set @et=CONCAT(@d," 06:00:00");

Datumsüberschneidung

where (h.starttime< @et) and (h.endtime> @st)

Blob als String

manche Befehle (u.a. CONCAT/CONCAT_WS/GROUP_CONCAT) erzeugen u.U. einen Binärwert (Blob) statt einen String.

CAST(CONCAT_WS(";",h.id,h.starttime,h.endtime,count(t.id)) AS CHAR)

Update mit Join

UPDATE TABLEA a 
   JOIN TABLEB b ON a.join_colA = b.join_colB  
SET a.columnToUpdate = [something]

Delete mit Join

delete s from head h
inner join text t on t.id=h.description
inner join status s on s.head_id=h.id
where xxx

mehrstufiges Join

um nur Datensätze ranzuhängen, wenn verteilte (über mehrere Tabellen) Bedingungen zutreffen

left join ticket_head th
  inner join ticket t ON t.id=th.ticket_id
  inner join apptype ta ON ta.id=t.apptype_system_id
ON th.head_id=h.id and ta.name='tickettype'

insert/update

höchsten Wert beim Update:

INSERT INTO monthlystats (id, server, time, uptime, players, rank) 
  VALUES (09126, 6, 0912, 302, 0, 1) 
ON DUPLICATE KEY UPDATE 
  uptime = GREATEST(uptime, VALUES(uptime)), 
  players = GREATEST(players, VALUES(players)),
  rank = GREATEST(rank, VALUES(rank))

Zeitzonen

SELECT @@global.time_zone, @@session.time_zone;

beim wert system muss man via shell auf dem Server schauen

$ date +"%Z %z"
CEST +0200

die DB solte eigentlich auf UTC sein und für die session kann man dann die entsprechende Zeitzone setzen:

SET time_zone = 'Europe/Berlin'

sollte mysql hier einen Fehler bringen, müssen die Zeitzonen im System importiert werden:

$ mysql_tzinfo_to_sql /usr/share/zoneinfo/|mysql -u root mysql -p

Diskussion

programming/mysql.txt · Zuletzt geändert: 2020/04/17 11:12 von frank