在Oracle中,Date和TimeStamp类型存储精度可变的固定日期时间。Intreval可以很容易地存储一个时间量,如“8个小时”或“30天”,将两个时间戳相减,就会得到一个时间间隔(Interval),例如,将8小时加到一个TimeStamp上,即得到一个新的TimeStamp。 Oracle 5
在Oracle中,Date和TimeStamp类型存储精度可变的固定日期时间。Intreval可以很容易地存储一个时间量,如“8个小时”或“30天”,将两个时间戳相减,就会得到一个时间间隔(Interval),例如,将8小时加到一个TimeStamp上,即得到一个新的TimeStamp。
Oracle 5中已经支持Date类型,TimeStamp和Interval在Oracle 9i Release 1中才被引入。因此,Date最为常见,但你应该在新应用中使用TimeStamp类型,因为:
1、TimeStamp支持小数秒,而Date不支持;
2、TimeStamp支持时区,Date不支持。
(一)Date类型Date类型是一个7字节的定宽日期/时间数据类型,它包含7个属性:世纪、世纪中哪一年、月份、月中的哪一天、小时、分钟、秒。Oracle使用一种内部格式来表示,它并不是保存20,12,10,31,12,01,00来表示2012年10月31日12:01:00,这个可以通过内置函数DUMP来查看:
Create table t (x date); insert into t(x) values (to_date('2012-11-24 12:01:00','YYYY-MM-dd HH24:mi:ss')); select x,dump(x,10) d from t;
查询结果:
世纪和年份字节,即(120,112)采用一种“加100”的表示法来存储。必须将其减去100才能得到正确的世纪和年份。这是为了支持BC和AD日期。
如果从世纪字节减100得到负数,表示BC日期,例如:
insert into t (x) values( to_date( '01-08-4712bc','dd-MM-yyyybc hh24:mi:ss' ) );
此时,会报一个错,“ORA-01856: 要求BC/B.C. 或AD/A.D.”。
修改为如下语句:
Insert into t (x) values(to_date('01-08-4712BC','dd-MM-YYYYBC','nls_date_language=American')); insert into t (x) values( to_date( '01-08-4710BC 12:01:13','dd-MM-yyyyBC hh24:mi:ss','nls_date_language=American') );
查看结果:
别担心,读出的世纪和年份是“虚”的,其实记录是正确的,以下语句即可。
select x, to_char(x,'dd-mm-yyyybc','nls_date_language=American') AS TrueDate,dump(x,10) d from t;
世纪字节是53,而53-100=-47,这才是我们插入的真实世纪。由于这是一个负数,我们知道它是一个BC日期。这种存储格式还允许日期以一种二进制方式自然地排序。由于4712BC小于4710BC,我们可以测试一下排序:
select x, to_char(x,'dd-mm-yyyybc','nls_date_language=American') AS TrueDate,dump(x,10) d from t order by TRUEDATE ASC;
接下来月份和日字节,自然存储,不作任何修改。小时、分、秒采用“加1”表示法存储,也就是各部分都减1,才能得到真实的时间。因此,午夜0点对应的日期字段表示为1,1,1
这种7字节格式能自然排序,可以采用一种二进制方式按从小到大或从大到小的顺序非常高效地进行排序。另外,这种结构允许很容易地进行截断,而无需把日期变成其他格式。即将尾部三个字节设置为1,1,1即可清除时间分量。
创建一个新表:
create table t ( what varchar2(10), x date ); insert into t (what, x) values ( 'downmoon', to_date( '25-11-2012 22:01:00', 'dd-MM-yyyy hh24:mi:ss' ) ); insert into t (what, x) select 'minute', trunc(x,'mi') from t union all select 'day', trunc(x,'dd') from t union all select 'month', trunc(x,'mm') from t union all select 'year', trunc(x,'y') from t / select what, x, dump(x,10) d from t;
结果:
要把这个日期截断,只取年份,数据库只要后5个字节置1,这是一个非常快速的操作。
而要向一个date增加时间或减去时间,请先遵循以下原则:
(1)使用NUMTODSINTERVAL增加时分秒;
(2)使用Date直接加数字增加天;
(3)使用ADD_MONTHS内置函数增加月和年;不建议使用NUMTOYMINTERVAL函数。因为前者会帮我们完成日期的舍入。
看示例:
alter session set nls_date_format='dd-MM-yyyy hh24:mi:ss'; select dt,add_months(dt,1) dt1,dt+NUMTOYMINTERVAL(1,'month') DT2 from (select to_date('29-02-2012','dd-MM-yyyy')dt from dual);
注意:ADD_MONTHS是添加自然月,而NUMTOYMINTERVAL是加到下个月的同一天,不管这一天是否有效,如果3月31日使用NUMTOYMINTERVAL加一个月,系统会报错。
因此,这句会正确执行:
select dt,add_months(dt,1) dt1 from (select to_date('31-03-2012','dd-MM-yyyy')dt from dual);
而这句会报错:指定月份的日期无效。
同理,向2012年2月29日增加1 年也会报错,因为不存在2013年2月29日。
另外一个应用就是如何得到两个日期之差,方法如下:
select numtoyminterval (trunc(months_between(dt2,dt1)),'month') years_months, numtodsinterval (dt2-add_months( dt1, trunc(months_between(dt2,dt1)) ), 'day' ) days_hours from (select to_date('2012-11-29 01:02:03','yyyy-MM-dd hh24:mi:ss') dt1, to_date('2014-03-15 11:22:33','yyyy-MM-dd hh24:mi:ss') dt2 from dual );
这个结果清楚地表明了两个日期相差1年、3个月、15天、10小时、20分、30秒。
下面一节我们将了解了下TimeStamp
助人等于自助! 3w@live.cn

MySQL -Funktionen können zur Datenverarbeitung und -berechnung verwendet werden. 1. Grundlegende Nutzung umfasst String -Verarbeitung, Datumsberechnung und mathematische Operationen. 2. Erweiterte Verwendung umfasst die Kombination mehrerer Funktionen zur Implementierung komplexer Vorgänge. 3. Die Leistungsoptimierung erfordert die Vermeidung der Verwendung von Funktionen in der WHERE -Klausel und der Verwendung von Gruppenby- und temporären Tabellen.

Effiziente Methoden für das Batch -Einfügen von Daten in MySQL gehören: 1. Verwenden von InsertInto ... Wertesyntax, 2. Verwenden von LoadDatainFile -Befehl, 3. Verwendung der Transaktionsverarbeitung, 4. Stapelgröße anpassen, 5. Deaktivieren Sie die Indexierung, 6. Verwenden Sie die Einfügung oder einfügen.

Fügen Sie in MySQL Felder mit alterTabletable_nameaddcolumnNew_columnvarchar (255) nach oben nachzusteuern. Beim Hinzufügen von Feldern müssen Sie einen Speicherort angeben, um die Abfrageleistung und die Datenstruktur zu optimieren. Vor dem Löschen von Feldern müssen Sie bestätigen, dass der Betrieb irreversibel ist. Die Änderung der Tabellenstruktur mithilfe von Online-DDL, Sicherungsdaten, Testumgebungen und Zeiträumen mit niedriger Last ist die Leistungsoptimierung und Best Practice.

Verwenden Sie den Befehl Erklärung, um den Ausführungsplan von MySQL -Abfragen zu analysieren. 1. Der Befehl Erklärung zeigt den Ausführungsplan der Abfrage an, um Leistungs Engpässe zu finden. 2. Der Ausführungsplan enthält Felder wie ID, SELECT_TYPE, TABLE, TYP, SOLY_KEYS, KEY, KEY_LEN, REF, Zeilen und Extra. 3. Nach dem Ausführungsplan können Sie Abfragen optimieren, indem Sie Indexes hinzufügen, vollständige Tabellen -Scans vermeiden, Join -Operationen optimieren und Overlay -Indizes verwenden.

Unterabfragen können die Effizienz der MySQL -Abfrage verbessern. 1) Unterabfrage vereinfacht die komplexe Abfragelogik wie Filterdaten und Berechnung der aggregierten Werte. 2) MySQL Optimizer kann Unterabfragen in die Verbesserung der Leistung umwandeln, um die Leistung zu verbessern. 3) Die Verwendung von existieren anstelle von in kann mehrere Zeilen zurückgeben, die Fehler zurückgeben. 4) Optimierungsstrategien umfassen die Vermeidung verwandter Unterabfragen, die Verwendung von existieren, die Indexoptimierung und die Vermeidung von Unterabfragen.

Methoden zum Konfigurieren von Zeichensätzen und Kollationen in MySQL gehören: 1. Einstellen der Zeichensätze und Kollationen auf Serverebene: setNames'utf8 '; SetCharactersetutf8; SetCollation_connection = 'utf8_general_ci'; 2. Erstellen Sie eine Datenbank, die bestimmte Zeichensätze und Kollationen verwendet: CreateDatabaseExample_Dbaractersetutf8collatutf8_General_ci; 3.. Geben Sie Zeichensätze und Kollationen an, wenn Sie eine Tabelle erstellen: createTableExample_table (IDINT

Befolgen Sie die folgenden Schritte, um MySQL sicher und gründlich zu deinstallieren und alle Restdateien zu reinigen: 1. MySQL Service; 2. MySQL -Pakete deinstallieren; 3.. Konfigurationsdateien und Datenverzeichnisse; 4. Überprüfen Sie, ob die Deinstallation gründlich ist.

Das Umbenennen einer Datenbank in MySQL erfordert indirekte Methoden. Die Schritte sind wie folgt: 1. Erstellen einer neuen Datenbank; 2. Verwenden Sie MySQldump, um die alte Datenbank zu exportieren. 3. Importieren Sie die Daten in die neue Datenbank; 4. Löschen Sie die alte Datenbank.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

PHPStorm Mac-Version
Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool
