SQL日期和時間

一、日期是如何存儲的

    1、日期和時間的標準數據類型
        日期和時間(DATETIME)存儲的標準SQL數據類型有3種
        DATE:存儲日期。DATE的格式是YYYY-MM-DD,範圍是從0001-01-01到9999-12-31。
        TIME:存儲時間。TIME的格式是HH:MI:SS.nn…,範圍是從00:00:00…到23:59:61.999…。
        TIMESTAMP:存儲日期和時間。TIMESTAMP的格式是YYYY-MM-DD HH:MI:SS.nn…,範圍是從0001-01-01 00:00:00…到9999-12-31 23:59:61.999…。

    2、DATETIME元素
        DATETIME元素 有效範圍
        YEAR  0001到9999
        MONTH 01到12
        DAY  01到31        HOUR 00到23
        MINUTE 00到59
        SECOND 00.000…到61.999…

    3、不同實現的日期類型

不同平臺的日期類型
產品 數據類型 用途
Oracle DATE 存儲日期和時間信息
SQL Server DATETIME 存儲日期和時間信息
SMALLDATETIME 存儲日期和時間信息,但取值範圍小於DATETIME
DATE 存儲日期值
TIME 存儲時間值
MySQL DATETIME 存儲日期和時間值
TIMESTAMP 存儲日期和時間值
DATE 存儲日期值
TIME 存儲時間值
YEAR 單字節,表示年

二、日期函數

    日期函數用於調整日期和時間的數據外觀,以適當的方式顯示日期和時間數據、進行比較、計算日期之間的間隔等。

    1、當前日期
        從根本上來說,當前日期保存在數據庫所在的計算機上時,被稱爲系統日期。

        不同實現裏獲取系統日期的方法:

        SQL Server使用GETDATE()的函數獲取系統日期。
        SELECT GETDATE()

        MySQL使用NOW()函數獲取當前日期和時間。NOW被稱爲僞字段。
        SELECT NOW()

        Oracle使用SYSDATE函數獲取當前日期和時間,並使用了Oracle中的DUAL表。
        SELECT SYSDATE FROM DUAL

    2、時區
        在處理日期和時間信息時,可能要考慮時區。不同時區,不同日期和時間信息。

    3、時間和日期相加

        SQL Server的DATEADD函數:
        DATEADD(MONTH, 1, DATE_HIRE)

        Oracle的ADD_MONTHS函數:
        ADD_MONTHS(DATE_HIRE,1)

        Oracle的日期增加一天:
        DATE_HIRE + 1

        MySQL使用ANSI標準的INTERVAL命令:
        DATE_ADD(DATE_HIRE, INTERVAL 1 DAY)

    4、其他日期函數

其它日期函數
產品 日期函數 用途
SQL Server DATEPART 返回日期的某個元素的整數值
DATENAME 返回日期的某個元素的文本值
GETDATE() 返回系統時間
DATEDIFF 返回兩個日期之間由指定日期元素表示的間隔,比如天數、分鐘數和秒數
Oracle NEXT_DAY 返回指定日期之後的下一天(比如FRIDAY)
MONTHS_BETWEEN 返回兩個日期之間相差的月數
MySQL DAYNAME(date) 顯示星期幾
DAYOFMONTH(date) 顯示幾日
DAYOFWEEK(date) 顯示星期幾
DAYOFYEAR(date) 顯示一年中的第幾天

三、日期轉換

    進行日期轉換的典型原因有:
    比較不同數據類型的日期值;
    把日期格式轉換爲字符串;
    把字符串轉換爲日期格式。

    ANSI的CAST操作符可以把一種數據類型轉換爲另一種,其基本語法如下:
    CAST(EXPRESSION AS NEW_DATA_TYPE)

    1、日期描述
        日期描述由格式元素組成,用於從數據庫以期望的格式提取日期和時間信息。
        常見的日期元素

    2、日期轉換爲字符串

        SQL Server使用的DATETIME
        DATE_HIRE = DATETIME(MONTH, DATE_HIRE)

        Oracle使用的TO_CHAR函數
        TO_CHAR(DATE_HIRE, ‘Month dd, yyyy’)

    3、字符串轉換爲日期

        MySQL的STR_TO_DATE
        STR_TO_DATE('01/01/2010 12:00:00 AM', '%m/%d/%Y %h:%i:%s %p')

        SQL Server的CONVERT
        CONVER(DATETIME,’02/25/2010 12:00:00 AM’)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章