实验环境 : BYS@bys1select * from nls_session_parameters where parameter='NLS_DATE_FORMAT'; PARAMETER VALUE -------------------- ------------------------------ NLS_DATE_FORMAT yyyy/mm/dd hh24:mi:ss BYS@bys1show parameter nls_lang NAME TYPE
实验环境:BYS@bys1>select * from nls_session_parameters where parameter='NLS_DATE_FORMAT';
PARAMETER VALUE
-------------------- ------------------------------
NLS_DATE_FORMAT yyyy/mm/dd hh24:mi:ss
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
nls_language string AMERICAN
1.直接使用SYSDATE加减数字来操作日期
日期+或-1,都代表加减一天的时间;而如果是一小时或几分钟这种,可以用天/小时这种方法。
如下面语句,1小时是1/24;5分钟是1/24/12。86400:1天=24小时=24*60*60=86400秒
BYS@bys1>select sysdate+365,sysdate-1,sysdate-3,sysdate-1/24,sysdate-1/24/12 from dual;SYSDATE+365 SYSDATE-1 SYSDATE-3 SYSDATE-1/24 SYSDATE-1/24/12
------------------- ------------------- ------------------- ------------------- -------------------
2014/11/02 19:26:15 2013/11/01 19:26:152013/10/30 19:26:15 2013/11/0218:26:15 2013/11/0219:21:15
2.TIMESTAMP 记录了年、月、日、时、分、秒和纳秒
SYSTIMESTAMP返回的是TIMESTAMP WITH TIME ZONE 类型的数据。+08:00表示当前是东八区。
BYS@bys1>select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
02-NOV-13 09.08.04.390741 PM +08:00
timestamp的显示格式不同于SYSDATE,要重新指定。
BYS@bys1>alter session set nls_timestamp_format='yyyy-mm-dd hh24:mi:ss.ff';
Session altered.
BYS@bys1>select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
02-NOV-13 09.11.19.258161 PM +08:00
表示TIMESTAMP的方法:
–to_timestamp('2013-02-09 23:59:59.000','yyyy-mm-dd hh24:mi:ss.ff')
–timestamp '2013-04-05 13:48:00.123456789'
–to_timestamp中的分隔符可以更换, timestamp中的日期分隔符必须是-,时间必须是:,秒后面必须跟上.
–timestamp可以精确表示到毫秒、微秒甚至纳秒级别
转换时未指定值时的默认值:年:同SYSDATE里的年;月:同SYSDATE里的月;日:1号;时分秒和纳秒:均为0
BYS@bys1>col a3 for a30
BYS@bys1>col a2 for a30
BYS@bys1>col a1 for a30
BYS@bys1>select to_timestamp('05 13','YY HH24') as a1,to_timestamp('05 13','mm mi') as a2,to_timestamp('05 13','dd ss') as a3 from dual;
A1 A2 A3
------------------------------ ------------------------------ ------------------------------
2005-11-01 13:00:00.000000000 2013-05-01 00:13:00.000000000 2013-11-05 00:00:13.000000000
关于微秒的指定方式:FF5表示给的时间戳可以有不超过5位的微秒。如果时间戳微秒有3位,指定转换为FF2,则报错。
同时在秒后最多只能指定9位。
BYS@bys1>select to_timestamp('05 13:48:22.778','DD HH24:MI:SS.FF5') from dual;
TO_TIMESTAMP('0513:48:22.778','DDHH24:MI:SS.FF5')
---------------------------------------------------------------------------
2013-11-05 13:48:22.778000000
要注意
BYS@bys1>select to_timestamp('05 13:48:22.778','DD HH24:MI:SS.FF2') from dual;
select to_timestamp('05 13:48:22.778','DD HH24:MI:SS.FF2') from dual
*
ERROR at line 1:
ORA-01880: the fractional seconds must be between 0 and 999999999
BYS@bys1>select to_timestamp('05 13:48:22.123456789','DD HH24:MI:SS.FF9') from dual;
TO_TIMESTAMP('0513:48:22.123456789','DDHH24:MI:SS.FF9')
---------------------------------------------------------------------------
2013-11-05 13:48:22.123456789
BYS@bys1>select to_timestamp('05 13:48:22.1234567890','DD HH24:MI:SS.FF9') from dual;
select to_timestamp('05 13:48:22.1234567890','DD HH24:MI:SS.FF9') from dual
*
ERROR at line 1:
ORA-01830: date format picture ends before converting entire input string
BYS@bys1>select to_timestamp('05 13:48:22.1234567890','DD HH24:MI:SS.FF10') from dual;
select to_timestamp('05 13:48:22.1234567890','DD HH24:MI:SS.FF10') from dual
*
ERROR at line 1:
ORA-01821: date format not recognized
3.date函数只可以表示日期,不可以表示时间。在下面4中有应用示例。
默认值:年:同SYSDATE里的年;月:同SYSDATE里的月;日:1号;时分秒:均为0
4.判断指定日期是否是某一天的。to_date及date中如果只指定日期未指定时间,默认是0点0分0秒。即前一天23:59:59的下一秒。
注意BETWEEN AND 相当于大于等于和小于等于。所以属于某一天,严格来说应该是从当天0点的0秒到 当天23:59:59秒。1天除以86400即1秒
BYS@bys1> select 'TRUE' from dual where to_date('2013-11-02 21:48:22','YYYY-MM-DD HH24:MI:SS') between date'2013-11-01' and date'2013-11-06'-1/86400;
'TRU
----
TRUE
BYS@bys1>select 'TRUE' from dual where to_date('2013/11/02 21:45:43','YYYY-MM-DD HH24:MI:SS') between to_date('2013-11-02','yyyy-mm-dd') and to_date('2013-11-03','yyyy-mm-dd hh24:mi:ss')-1/86400;
'TRU
----
TRUE
也可以用to_date对日期进行显式转换。
select 'TRUE' from dual where to_date('2013/11/02 21:45:43','YYYY-MM-DD HH24:MI:SS') between to_date('2013-11-02','yyyy-mm-dd') and to_date('2013-11-03','yyyy-mm-dd hh24:mi:ss')-1/86400;
'TRUE'
------
TRUE
注意BETWEEN AND 相当于大于等于和小于等于
BYS@bys1> select 'TRUE' from dual where to_date('2013/11/02 21:45:43','YYYY-MM-DD HH24:MI:SS') >= date'2013-11-02' and to_date('2013/11/02 21:45:43','YYYY-MM-DD HH24:MI:SS')
'TRU
----
TRUE
其实也可以用小于11月3号来表示小于等于11月2号的23:59:59秒。
BYS@bys1> select 'TRUE' from dual where to_date('2013/11/02 23:59:59','YYYY-MM-DD HH24:MI:SS') >= date'2013-11-02' and to_date('2013/11/02 23:59:59','YYYY-MM-DD HH24:MI:SS')
'TRU
----
TRUE
5.MONTHS_BETWEEN(a,b):表示a和b两个日期的月份之差,是a-b,如果a日期比b晚,即比b大,则为正数;反之,为负数。
BYS@bys1>Select EMPNO,HIREDATE,MONTHS_BETWEEN(Sysdate,HIREDATE)/12 dday,sysdate From EMP where rownum EMPNO HIREDATE DDAY SYSDATE---------- ------------------- ---------- -------------------
7369 1980/12/17 00:00:00 32.8784294 2013/11/02 18:37:05
7499 1981/02/20 00:00:00 32.7036983 2013/11/02 18:37:05
BYS@bys1>select months_between(sysdate,to_date('2011/11/11 11:11:11','yyyy-mm-dd hh24:mi:ss')) as dday from dual;
DDAY
----------
23.7196307
BYS@bys1>select months_between(to_date('2011/11/11 11:11:11','yyyy-mm-dd hh24:mi:ss'),sysdate) as dday from dual;
DDAY
----------
-23.719639
6.ADD_MONTHS:表示给指定的日期加一个月数,即N个月后的日期。如果当前日期加上指定月数超过一年,则年份也自动增加。
BYS@bys1>select add_months(sysdate,1),add_months(sysdate,4) from dual;ADD_MONTHS(SYSDATE, ADD_MONTHS(SYSDATE,
------------------- -------------------
2013/12/02 18:39:23 2014/03/02 18:39:23
7.NEXT_DAY:表示以当前时间为基准,下一个"目标日"的日期
BYS@bys1>select next_day(sysdate,'sunday'),next_day(sysdate,'tuesday') from dual;NEXT_DAY(SYSDATE,'S NEXT_DAY(SYSDATE,'T
------------------- -------------------
2013/11/03 19:34:20 2013/11/05 19:34:20
8.LAST_DAY:计算当前日期的最后一天,即当月最后一天。
BYS@bys1>select last_day(sysdate) from dual;LAST_DAY(SYSDATE)
-------------------
2013/11/30 18:43:16
9.使用ROUND:对日期进行四舍五入
只能对年、月、日、时、分进行四舍五入;不能操作秒。BYS@bys1>select round(sysdate,'yy') as year,round(sysdate,'mm') as month,round(sysdate,'dd') as day,round(sysdate,'hh') as hour,round(sysdate,'hh24') as hour24,round(sysdate,'mi') as minutes from dual;
YEAR MONTH DAY HOUR HOUR24 MINUTES
------------------- ------------------- ------------------- ------------------- ------------------- -------------------
2014/01/01 00:00:00 2013/11/01 00:00:00 2013/11/03 00:00:00 2013/11/02 19:00:00 2013/11/02 19:00:00 2013/11/02 18:59:00
BYS@bys1> select round(sysdate,'ss') as sss from dual;
select round(sysdate,'ss') as sss from dual
*
ERROR at line 1:
ORA-01899: bad precision specifier
10.使用TRUNC:对日期进行截取
BYS@bys1>set linesize 200BYS@bys1>select trunc(sysdate,'yy') as year,trunc(sysdate,'mm') as month,trunc(sysdate,'dd') as day,trunc(sysdate,'hh') as hour,trunc(sysdate,'hh24') as hour24,trunc(sysdate,'mi') as minutes from dual;
YEAR MONTH DAY HOUR HOUR24 MINUTES
------------------- ------------------- ------------------- ------------------- ------------------- -------------------
2013/01/01 00:00:00 2013/11/01 00:00:00 2013/11/02 00:00:00 2013/11/02 18:00:00 2013/11/02 18:00:00 2013/11/02 18:52:00
只能截取年、月、日、时、分;不能截取秒。
BYS@bys1> select trunc(sysdate,'ss') as sss from dual;
select trunc(sysdate,'ss') as sss from dual
*
ERROR at line 1:
ORA-01899: bad precision specifier

MySQL verwendet eine GPL -Lizenz. 1) Die GPL -Lizenz ermöglicht die freie Verwendung, Änderung und Verteilung von MySQL, aber die geänderte Verteilung muss GPL entsprechen. 2) Gewerbelizenzen können öffentliche Änderungen vermeiden und für gewerbliche Anwendungen geeignet sind, die Vertraulichkeit erfordern.

Die Situationen bei der Auswahl von InnoDB anstelle von MyISAM umfassen: 1) Unterstützung der Transaktion, 2) hohe Genauigkeitsumgebung, 3) hohe Datenkonsistenz; Umgekehrt umfasst die Situation bei der Auswahl von MyISAM: 1) hauptsächlich Lesen von Operationen, 2) Es ist keine Transaktionsunterstützung erforderlich. InnoDB ist für Anwendungen geeignet, die eine hohe Datenkonsistenz und Transaktionsverarbeitung erfordern, z. B. E-Commerce-Plattformen, während MyISAM für lessintensive und transaktionsfreie Anwendungen wie Blog-Systeme geeignet ist.

In MySQL besteht die Funktion von Fremdschlüssel darin, die Beziehung zwischen Tabellen herzustellen und die Konsistenz und Integrität der Daten zu gewährleisten. Fremdeschlüssel behalten die Wirksamkeit von Daten durch Referenzintegritätsprüfungen und Kaskadierungsvorgänge bei. Achten Sie auf die Leistungsoptimierung und vermeiden Sie bei der Verwendung häufige Fehler.

Es gibt vier Hauptindextypen in MySQL: B-Tree-Index, Hash-Index, Volltextindex und räumlicher Index. 1.B-Tree-Index ist für Reichweite, Sortierung und Gruppierung geeignet und für die Erstellung der Namensspalte der Mitarbeiter-Tabelle geeignet. 2. Hash -Index ist für äquivalente Abfragen geeignet und für die Erstellung der ID -Spalte der Tabelle Hash_Table der Speicherspeicher -Engine geeignet. 3. Der Volltextindex wird für die Textsuche verwendet, die für die Erstellung in der Inhaltspalte der Artikeltabelle geeignet ist. 4. Der räumliche Index wird für die Geospatial -Abfrage verwendet, die für die Erstellung auf Geom -Spalten der Standorte Tabelle geeignet ist.

TocreateanIndexinMysql, UsethecreatInedExStatement.1) ForasingLecolumn, verwenden Sie "createIdexidx_lastNameOntrayees (Nachname); 2) foracompositeIndex, verwenden" createIndexidx_nameonomiebhaber (Lastname, Firstname);

Der Hauptunterschied zwischen MySQL und SQLite ist das Design-Konzept und die Nutzungsszenarien: 1. MySQL eignet sich für große Anwendungen und Lösungen auf Unternehmensebene, die hohe Leistung und hohe Parallelität unterstützen. 2. SQLite ist für mobile Anwendungen und Desktop -Software geeignet, leicht und leicht einzubetten.

Indizes in MySQL sind eine geordnete Struktur einer oder mehrerer Spalten in einer Datenbanktabelle, die zur Beschleunigung der Datenabnahme verwendet wird. 1) Indexe verbessern die Abfragegeschwindigkeit durch Reduzierung der Menge an gescannten Daten. 2) B-Tree-Index verwendet eine ausgewogene Baumstruktur, die für die Reichweite und Sortierung geeignet ist. 3) Verwenden Sie CreateIndex -Anweisungen, um Indizes zu erstellen, z. 4) Zusammengesetzte Indizes können Multi-Säulen-Abfragen optimieren, z. 5) Erklärung verwenden, um Abfragepläne zu analysieren und zu vermeiden

Durch die Verwendung von Transaktionen in MySQL wird die Datenkonsistenz gewährleistet. 1) Starten Sie die Transaktion über starttransaction und führen Sie dann SQL -Operationen aus und senden Sie sie mit Commit oder Rollback. 2) Setzen Sie SavePoint, um einen Speicherpunkt zu setzen, um teilweise Rollback zu ermöglichen. 3) Vorschläge zur Leistungsoptimierung umfassen die Verkürzung der Transaktionszeit, die Vermeidung großer Abfragen und die Verwendung von Isolationsniveaus.


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 chinesische Version
Chinesische Version, sehr einfach zu bedienen

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

SublimeText3 Linux neue Version
SublimeText3 Linux neueste Version

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.
