之前的文章介绍了在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
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实现日期或时间戳类型到字符串的转换。

MySQL和SQLite的主要區別在於設計理念和使用場景:1.MySQL適用於大型應用和企業級解決方案,支持高性能和高並發;2.SQLite適合移動應用和桌面軟件,輕量級且易於嵌入。

MySQL中的索引是數據庫表中一列或多列的有序結構,用於加速數據檢索。 1)索引通過減少掃描數據量提升查詢速度。 2)B-Tree索引利用平衡樹結構,適合範圍查詢和排序。 3)創建索引使用CREATEINDEX語句,如CREATEINDEXidx_customer_idONorders(customer_id)。 4)複合索引可優化多列查詢,如CREATEINDEXidx_customer_orderONorders(customer_id,order_date)。 5)使用EXPLAIN分析查詢計劃,避

在MySQL中使用事務可以確保數據一致性。 1)通過STARTTRANSACTION開始事務,執行SQL操作後用COMMIT提交或ROLLBACK回滾。 2)使用SAVEPOINT可以設置保存點,允許部分回滾。 3)性能優化建議包括縮短事務時間、避免大規模查詢和合理使用隔離級別。

選擇PostgreSQL而非MySQL的場景包括:1)需要復雜查詢和高級SQL功能,2)要求嚴格的數據完整性和ACID遵從性,3)需要高級空間功能,4)處理大數據集時需要高性能。 PostgreSQL在這些方面表現出色,適合需要復雜數據處理和高數據完整性的項目。

MySQL數據庫的安全可以通過以下措施實現:1.用戶權限管理:通過CREATEUSER和GRANT命令嚴格控制訪問權限。 2.加密傳輸:配置SSL/TLS確保數據傳輸安全。 3.數據庫備份和恢復:使用mysqldump或mysqlpump定期備份數據。 4.高級安全策略:使用防火牆限制訪問,並啟用審計日誌記錄操作。 5.性能優化與最佳實踐:通過索引和查詢優化以及定期維護兼顧安全和性能。

如何有效監控MySQL性能?使用mysqladmin、SHOWGLOBALSTATUS、PerconaMonitoringandManagement(PMM)和MySQLEnterpriseMonitor等工具。 1.使用mysqladmin查看連接數。 2.用SHOWGLOBALSTATUS查看查詢數。 3.PMM提供詳細性能數據和圖形化界面。 4.MySQLEnterpriseMonitor提供豐富的監控功能和報警機制。

MySQL和SQLServer的区别在于:1)MySQL是开源的,适用于Web和嵌入式系统,2)SQLServer是微软的商业产品,适用于企业级应用。两者在存储引擎、性能优化和应用场景上有显著差异,选择时需考虑项目规模和未来扩展性。

在需要高可用性、高級安全性和良好集成性的企業級應用場景下,應選擇SQLServer而不是MySQL。 1)SQLServer提供企業級功能,如高可用性和高級安全性。 2)它與微軟生態系統如VisualStudio和PowerBI緊密集成。 3)SQLServer在性能優化方面表現出色,支持內存優化表和列存儲索引。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

記事本++7.3.1
好用且免費的程式碼編輯器

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),