Home Database Mysql Tutorial 在PL/SQL中使用日期类型

在PL/SQL中使用日期类型

Jun 07, 2016 pm 03:21 PM
pl/sql

之前的文章介绍了在PL/SQL中使用字符串和数字了下。毫无疑问,字符串和数字很重要,但是可以确定的是没有哪个应用不依赖于日期的

在PL/SQL中使用日期类型

之前的文章介绍了在PL/SQL中使用字符串和数字了下。毫无疑问,字符串和数字很重要,但是可以确定的是没有哪个应用不依赖于日期的。

Oracle使用由字符串索引的二维数组 

你需要记录事件的发生事件,人们的出生日期等等很多。

通常的使用方式是:

1)声明日期变量和常量

2)使用内建函数显示和修改日期值

3)执行日期相关计算

日期类型比字符串或数字更复杂。它有多个部分组成(年,月,日,时,分,秒等),而且关于一个有效的日期有很多规则。
本文将给你所有信息以便在PL/SQL程序中使用日期。

1、PL/SQL中的日期,时间戳和间隔(Intervals)

绝大多数应用需要存储和操作日期和时间。不像字符串和数字,,日期要求更复杂:不仅仅因为他们更高级的格式化数据,其对于有效值和有效计算方式都有
很多规则。

Fortunately, Oracle Database and PL/SQL provide a set of true date and time datatypes that store both date and time information in a standard internal format, and they also have an extensive set of built-in functions for manipulating the date and time.

庆幸的是,Oracle数据库和PL/SQL提供了一系列日期和时间类型以标准形式来存储日期和时间信息,还有一系列内建函数来实现日期和时间计算。
有三种相关类型:
1)DATE—This datatype stores a date and a time, resolved to the second. It does not include the time zone【时区】. DATE is the oldest and most commonly used datatype for working with dates in Oracle applications. 也是最古老和最常用的类型。

2)TIMESTAMP—Time stamps are similar to dates, but with these two key distinctions:
(2.1) you can store and manipulate times resolved to the nearest billionth of a second (9 decimal places of precision), and
存储精度达到10亿分之一秒。
(2.2) you can associate a time zone with a time stamp, and Oracle Database will take that time zone into account when manipulating the time stamp. 可带时区。

3)INTERVAL—Whereas DATE and TIMESTAMP record a specific point in time, INTERVAL records and computes a time duration. You can specify an interval in terms of years and months, or days and seconds.
记录时间间隔。可以指定年和月或天和秒级别的时间间隔。

来看个例子:
Code Listing 1: Declaring DATE, TIMESTAMP, and INTERVAL variables

DECLARE l_today_date DATE := SYSDATE; l_today_timestamp TIMESTAMP := SYSTIMESTAMP; l_today_timetzone TIMESTAMP WITH TIME ZONE := SYSTIMESTAMP; l_interval1 INTERVAL YEAR (4) TO MONTH := '2011-11'; l_interval2 INTERVAL DAY (2) TO SECOND := '15 00:30:44'; BEGIN null; END; /

2、如何选择使用合适的日期类型?
1)Use one of the TIMESTAMP types if you need to track time down to a fraction of a second.

2)You can, in general, use TIMESTAMP in place of DATE. A time stamp that does not contain subsecond precision takes up 7 bytes of storage, just as a DATE datatype does. When your time stamp does contain subsecond【亚秒】 data, it takes up 11 bytes of storage.

3)Use TIMESTAMP WITH TIME ZONE if you need to keep track of the session time zone in which the data was entered.

4)Use TIMESTAMP WITH LOCAL TIME ZONE if you want the database to automatically convert a time between the database and session time zones. 自动转换数据库时间和会话时间时区。

5)Use DATE when it’s necessary to maintain compatibility with an existing application written before any of the TIMESTAMP datatypes were introduced. 保持向前兼容性。

3、如何获得当前时间?
相信大多数开发者都是通过SYSDATE函数,但是Oracle数据库还提供了其他一些函数,一起来看一下:

1)会话级别函数:
CURRENT_DATE 返回:DATE
CURRENT_TIMESTAMP 返回:TIMESTAMP WITH TIME ZONE
LOCALTIMESTAMP 返回:TIMESTAMP

2)数据库级别
SYSDATE 返回:DATE
SYSTIMESTAMP 返回:TIMESTAMP WITH TIME ZONE

Code Listing 2: Calls to SYSDATE and SYSTIMESTAMP and the returned values

例如:

BEGIN DBMS_OUTPUT.put_line (SYSDATE); DBMS_OUTPUT.put_line (SYSTIMESTAMP); DBMS_OUTPUT.put_line (SYSDATE - SYSTIMESTAMP); END; /

Here is the output:

07-AUG-11
07-AUG-11 08.46.16.379000000 AM -05:00
-000000000 00:00:00.379000000

因为我给DBMS_OUTPUT.PUT_LINE传递了日期和时间戳,Oracle数据库使用数据库或会话级的默认格式(参数:NLS_DATE_FORMAT)将其隐式转换为字符串。
默认安装数据库时的格式为:DD-MON-YYYY。而默认时间戳格式包含了日期和时区的偏移(offset)。

如何修改?【译者注:以下摘自网络】
1).可以在用户环境变量中指定(LINUX)。 在用户的.bash_profile中增加两句:
export NLS_LANG=AMERICAN —要注意这一句必须指定,不然下一句不生效。
export NLS_DATE_FORMAT=’yyyy/mm/dd hh24:mi:ss’
2).在SQLPLUS的glogin.sql文件增加一句: alter session set nls_date_format = ‘yyyy-mm-dd hh24:mi:ss’;
3).直接修改当前会话的日期格式 : alter session set nls_date_format = ‘yyyy-mm-dd hh24:mi:ss’;
4).修改数据库的参数,需要重启数据库后生效 SQL> alter system set nls_date_format=’yyyy-mm-dd hh24:mi:ss’ scope=spfile;

4、实现日期到字符串和字符串到日期的转换?

正如to_char函数对于数字一样,我们使用另外一个版本的to_char实现日期或时间戳类型到字符串的转换。

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
4 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How do you alter a table in MySQL using the ALTER TABLE statement? How do you alter a table in MySQL using the ALTER TABLE statement? Mar 19, 2025 pm 03:51 PM

The article discusses using MySQL's ALTER TABLE statement to modify tables, including adding/dropping columns, renaming tables/columns, and changing column data types.

Explain InnoDB Full-Text Search capabilities. Explain InnoDB Full-Text Search capabilities. Apr 02, 2025 pm 06:09 PM

InnoDB's full-text search capabilities are very powerful, which can significantly improve database query efficiency and ability to process large amounts of text data. 1) InnoDB implements full-text search through inverted indexing, supporting basic and advanced search queries. 2) Use MATCH and AGAINST keywords to search, support Boolean mode and phrase search. 3) Optimization methods include using word segmentation technology, periodic rebuilding of indexes and adjusting cache size to improve performance and accuracy.

How do I configure SSL/TLS encryption for MySQL connections? How do I configure SSL/TLS encryption for MySQL connections? Mar 18, 2025 pm 12:01 PM

Article discusses configuring SSL/TLS encryption for MySQL, including certificate generation and verification. Main issue is using self-signed certificates' security implications.[Character count: 159]

What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? What are some popular MySQL GUI tools (e.g., MySQL Workbench, phpMyAdmin)? Mar 21, 2025 pm 06:28 PM

Article discusses popular MySQL GUI tools like MySQL Workbench and phpMyAdmin, comparing their features and suitability for beginners and advanced users.[159 characters]

How do you handle large datasets in MySQL? How do you handle large datasets in MySQL? Mar 21, 2025 pm 12:15 PM

Article discusses strategies for handling large datasets in MySQL, including partitioning, sharding, indexing, and query optimization.

Difference between clustered index and non-clustered index (secondary index) in InnoDB. Difference between clustered index and non-clustered index (secondary index) in InnoDB. Apr 02, 2025 pm 06:25 PM

The difference between clustered index and non-clustered index is: 1. Clustered index stores data rows in the index structure, which is suitable for querying by primary key and range. 2. The non-clustered index stores index key values ​​and pointers to data rows, and is suitable for non-primary key column queries.

How do you drop a table in MySQL using the DROP TABLE statement? How do you drop a table in MySQL using the DROP TABLE statement? Mar 19, 2025 pm 03:52 PM

The article discusses dropping tables in MySQL using the DROP TABLE statement, emphasizing precautions and risks. It highlights that the action is irreversible without backups, detailing recovery methods and potential production environment hazards.

How do you create indexes on JSON columns? How do you create indexes on JSON columns? Mar 21, 2025 pm 12:13 PM

The article discusses creating indexes on JSON columns in various databases like PostgreSQL, MySQL, and MongoDB to enhance query performance. It explains the syntax and benefits of indexing specific JSON paths, and lists supported database systems.

See all articles