sql學習筆記(5)---------有關時間查詢語句,學習筆記時間查詢
MySQL NOW() 函數 定義和用法
NOW() 函數返回當前的日期和時間。
執行個體例子 1
下面是 SELECT 語句:
SELECT NOW(),CURDATE(),CURTIME()
結果類似:
NOW() |
CURDATE() |
CURTIME() |
2008-12-29 16:25:46 |
2008-12-29 |
16:25:46 |
例子 2
下面的 SQL 建立帶有日期時間列 (OrderDate) 的 "Orders" 表:
CREATE TABLE Orders (OrderId int NOT NULL,ProductName varchar(50) NOT NULL,OrderDate datetime NOT NULL DEFAULT NOW(),PRIMARY KEY (OrderId))
請注意,OrderDate 列規定 NOW() 作為預設值。作為結果,當您向表中插入行時,當前日期和時間自動插入列中。
現在,我們希望在 "Orders" 表中插入一條新紀錄:
INSERT INTO Orders (ProductName) VALUES ('Computer')
"Orders" 表將類似這樣:
OrderId |
ProductName |
OrderDate |
1 |
'Computer' |
2008-12-29 16:25:46.635 |
MySQL EXTRACT() 函數
定義和用法
EXTRACT() 函數用於返回日期/時間的單獨部分,比如年、月、日、小時、分鐘等等。
文法
EXTRACT(unit FROM date)
date 參數是合法的日期運算式。unit 參數可以是下列的值:
Unit 值 |
MICROSECOND |
SECOND |
MINUTE |
HOUR |
DAY |
WEEK |
MONTH |
QUARTER |
YEAR |
SECOND_MICROSECOND |
MINUTE_MICROSECOND |
MINUTE_SECOND |
HOUR_MICROSECOND |
HOUR_SECOND |
HOUR_MINUTE |
DAY_MICROSECOND |
DAY_SECOND |
DAY_MINUTE |
DAY_HOUR |
YEAR_MONTH |
執行個體
假設我們有如下的表:
OrderId |
ProductName |
OrderDate |
1 |
'Computer' |
2008-12-29 16:25:46.635 |
我們使用下面的 SELECT 語句:
SELECT EXTRACT(YEAR FROM OrderDate) AS OrderYear,EXTRACT(MONTH FROM OrderDate) AS OrderMonth,EXTRACT(DAY FROM OrderDate) AS OrderDayFROM OrdersWHERE OrderId=1
結果:
OrderYear |
OrderMonth |
OrderDay |
2008 |
12 |
29 |
MySQL CURDATE() 函數定義和用法
CURDATE() 函數返回當前的日期。
執行個體例子 1
下面是 SELECT 語句:
SELECT NOW(),CURDATE(),CURTIME()
結果類似:
NOW() |
CURDATE() |
CURTIME() |
2008-12-29 16:25:46 |
2008-12-29 |
16:25:46 |
例子 2
下面的 SQL 建立帶有日期時間列 (OrderDate) 的 "Orders" 表:
CREATE TABLE Orders (OrderId int NOT NULL,ProductName varchar(50) NOT NULL,OrderDate datetime NOT NULL DEFAULT CURDATE(),PRIMARY KEY (OrderId))
請注意,OrderDate 列規定 CURDATE() 作為預設值。作為結果,當您向表中插入行時,當前日期和時間自動插入列中。
現在,我們希望在 "Orders" 表中插入一條新紀錄:
INSERT INTO Orders (ProductName) VALUES ('Computer')
"Orders" 表將類似這樣:
OrderId |
ProductName |
OrderDate |
1 |
'Computer' |
2008-12-29 |
MySQL CURTIME() 函數
定義和用法
CURTIME() 函數返回當前的時間。
執行個體
下面是 SELECT 語句:
SELECT NOW(),CURDATE(),CURTIME()
結果類似:
NOW() |
CURDATE() |
CURTIME() |
2008-12-29 16:25:46 |
2008-12-29 |
16:25:46 |
MySQL DATE_ADD() 函數
定義和用法
DATE_ADD() 函數向日期添加指定的時間間隔。
文法
DATE_ADD(date,INTERVAL expr type)
date 參數是合法的日期運算式。expr 參數是您希望添加的時間間隔。
type 參數可以是下列值:
Type 值 |
MICROSECOND |
SECOND |
MINUTE |
HOUR |
DAY |
WEEK |
MONTH |
QUARTER |
YEAR |
SECOND_MICROSECOND |
MINUTE_MICROSECOND |
MINUTE_SECOND |
HOUR_MICROSECOND |
HOUR_SECOND |
HOUR_MINUTE |
DAY_MICROSECOND |
DAY_SECOND |
DAY_MINUTE |
DAY_HOUR |
YEAR_MONTH |
執行個體
假設我們有如下的表:
OrderId |
ProductName |
OrderDate |
1 |
'Computer' |
2008-12-29 16:25:46.635 |
現在,我們希望向 "OrderDate" 添加 2 天,這樣就可以找到付款日期。
我們使用下面的 SELECT 語句:
SELECT OrderId,DATE_ADD(OrderDate,INTERVAL 2 DAY)
AS OrderPayDateFROM Orders
結果:
OrderId |
OrderPayDate |
1 |
2008-12-31 16:25:46.635 |
MySQL DATE_FORMAT() 函數
定義和用法
DATE_FORMAT() 函數用於以不同的格式顯示日期/時間資料。
文法
DATE_FORMAT(date,format)
date 參數是合法的日期。format 規定日期/時間的輸出格式。
可以使用的格式有:
格式 |
描述 |
%a |
縮寫星期名 |
%b |
縮寫月名 |
%c |
月,數值 |
%D |
帶有英文首碼的月中的天 |
%d |
月的天,數值(00-31) |
%e |
月的天,數值(0-31) |
%f |
微秒 |
%H |
小時 (00-23) |
%h |
小時 (01-12) |
%I |
小時 (01-12) |
%i |
分鐘,數值(00-59) |
%j |
年的天 (001-366) |
%k |
小時 (0-23) |
%l |
小時 (1-12) |
%M |
月名 |
%m |
月,數值(00-12) |
%p |
AM 或 PM |
%r |
時間,12-小時(hh:mm:ss AM 或 PM) |
%S |
秒(00-59) |
%s |
秒(00-59) |
%T |
時間, 24-小時 (hh:mm:ss) |
%U |
周 (00-53) 星期日是一周的第一天 |
%u |
周 (00-53) 星期一是一周的第一天 |
%V |
周 (01-53) 星期日是一周的第一天,與 %X 使用 |
%v |
周 (01-53) 星期一是一周的第一天,與 %x 使用 |
%W |
星期名 |
%w |
周的天 (0=星期日, 6=星期六) |
%X |
年,其中的星期日是周的第一天,4 位,與 %V 使用 |
%x |
年,其中的星期一是周的第一天,4 位,與 %v 使用 |
%Y |
年,4 位 |
%y |
年,2 位 |
執行個體
下面的指令碼使用 DATE_FORMAT() 函數來顯示不同的格式。我們使用 NOW() 來獲得當前的日期/時間:
DATE_FORMAT(NOW(),'%b %d %Y %h:%i %p')DATE_FORMAT(NOW(),'%m-%d-%Y')DATE_FORMAT(NOW(),'%d %b %y')DATE_FORMAT(NOW(),'%d %b %Y %T:%f')
結果類似:
Dec 29 2008 11:45 PM12-29-200829 Dec 0829 Dec 2008 16:25:46.635
MySQL DATE_SUB() 函數
定義和用法
DATE_SUB() 函數從日期減去指定的時間間隔。
文法
DATE_SUB(date,INTERVAL expr type)
date 參數是合法的日期運算式。expr 參數是您希望添加的時間間隔。
type 參數可以是下列值:
Type 值 |
MICROSECOND |
SECOND |
MINUTE |
HOUR |
DAY |
WEEK |
MONTH |
QUARTER |
YEAR |
SECOND_MICROSECOND |
MINUTE_MICROSECOND |
MINUTE_SECOND |
HOUR_MICROSECOND |
HOUR_SECOND |
HOUR_MINUTE |
DAY_MICROSECOND |
DAY_SECOND |
DAY_MINUTE |
DAY_HOUR |
YEAR_MONTH |
執行個體
假設我們有如下的表:
OrderId |
ProductName |
OrderDate |
1 |
'Computer' |
2008-12-29 16:25:46.635 |
現在,我們希望從 "OrderDate" 減去 2 天。
我們使用下面的 SELECT 語句:
SELECT OrderId,DATE_SUB(OrderDate,INTERVAL 2 DAY)
AS OrderPayDateFROM Orders
結果:
OrderId |
OrderPayDate |
1 |
2008-12-27 16:25:46.635 |
MySQL DATEDIFF() 函數
定義和用法
DATEDIFF() 函數返回兩個日期之間的天數。
文法
DATEDIFF(date1,date2)
date1 和 date2 參數是合法的日期或日期/時間運算式。
注釋:只有值的日期部分參與計算。
執行個體例子 1
使用如下 SELECT 語句:
SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate
結果:
例子 2
使用如下 SELECT 語句:
SELECT DATEDIFF('2008-12-29','2008-12-30') AS DiffDate
結果:
MySQL DATE() 函數
定義和用法
DATE() 函數返回日期或日期/時間運算式的日期部分。
文法
DATE(date)
date 參數是合法的日期運算式。
執行個體
假設我們有如下的表:
OrderId |
ProductName |
OrderDate |
1 |
'Computer' |
2008-12-29 16:25:46.635 |
我們使用下面的 SELECT 語句:
SELECT ProductName, DATE(OrderDate) AS OrderDateFROM OrdersWHERE OrderId=1
結果:
ProductName |
OrderDate |
'Computer' |
2008-12-29 |
本借鑒w3cschool