Der Datetime-Datentyp für mysql 5.6.4 und danach wird wie in der Handbuchseite Date and Time Data Type Representation beschrieben gespeichert. Kurz gesagt, es ist ein 5-Byte-Format einschließlich Sekundenbruchteilen und ist von Zeitzoneninformationen getrennt.
Testtabelle
create table dtTest
(
id int auto_increment primary key,
dt datetime not null
);
insert dtTest (dt) values ('2016-04-27 09:00:00');
Wenn man dies bestätigen benötigt, könnte man in einen Hex-Editor der gespeicherten Datei springen und das Big-Endian-Format der Datumzeit überprüfen.
Zeige Variablen wie '% datadir%';
C:\ProgramData\MySQL\MySQL Server 5.6\Data\
Traverse in Ordnern und der db-Tabelle (dtTest.ibd)
Es gibt System- und Sitzungsvariablen für Zeitzone:
show variables like '% system_time_zone%';
Eastern Daylight Time
Zeige Variablen wie '% time_zone%';
SYSTEM
ich klar sein lassen, dass ich von der Wichtigkeit dieser völlig ahnungslos bin. Hoffentlich kann ein Peer Klarheit schaffen.
SELECT @@ global.time_zone, @@ session.time_zone;
SYSTEM SYSTEM
-Test ein Reset auf etwas anderes:
SET SESSION time_zone = '+10:00';
select * from dtTest;
Beachten Sie, dass die obige Einstellungsänderung die Ausgabe von Daten nicht beeinflusst. Es ist immer noch roh und unabhängig von der Zeitzone.
SET SESSION time_zone = 'America/Chicago';
für die oben zu arbeiten, finden Sie unter:
http://dev.mysql.com/doc/refman/5.6/en/mysql-tzinfo-to-sql.html
Ansonsten ohne dass Zeitzone Unterstützung geladen, würde man so etwas durchführen müssen:
SET SESSION time_zone = '+10:00';
SELECT @@global.time_zone, @@session.time_zone;
SYSTEM +10:00
Einstellung Sitzung zurück zu meinem Standard:
SET SESSION time_zone = 'SYSTEM';
SELECT COUNT(*) FROM mysql.time_zone_name;
Meine Zahl ist 0, weil ich nicht die Zeitzone Unterstützung Tabelle geladen haben noch
SELECT CONVERT_TZ('2007-03-11 3:00:00','US/Eastern','US/Central');
- so ist dies für mich NULL. Es ist noch keine Support-Tabelle auf meinem System geladen.
SELECT CONVERT_TZ('2007-03-11 3:00:00','-4:00','-7:00');
2007-03-11 00:00:00 - bedeutet, dass 03.00 NYC in San Fran midnite ist
also nicht NULL die oben (weniger freundlich Offsets UTC-Zeit zu lesen Festcodiert.).
SELECT-ID, CONVERT_TZ (dt, '- 4:00', '- 7:00') von dtTest; - dt war mein Spaltenname
1 2016-04-27 06:00:00
Die obige SELECT-Anweisung den Wert 09.00 Uhr in der db nimmt, kann es von NYC Zeit nach San Fran Zeit umwandelt.
Das ist das Beste, was ich für Sie habe. Hoffentlich kann jemand die fehlenden Details der Zeitzonenunterstützung eintragen.
Dieser Blogeintrag könnte antworten: [Wie wird ein Datum gespeichert?] (Https://www.informit.com/library/content.aspx?b=STY_Sql_24hours&seqNum=93) – Phiter
Native Typen werden in nativen Formaten gespeichert. –
können Sie mehr über "Es tut mir sehr weh und ,,," – Drew