標籤:pos 結果 asp date() 代碼 use erp ffd %x
當我們處理日期時,最難的任務恐怕是確保所插入的日期的格式,與資料庫中日期列的格式相匹配。
只要資料包含的只是日期部分,執行查詢就不會出問題。但是,如果涉及時間,情況就有點複雜了。
在討論日期查詢的複雜性之前,我們先來看看最重要的內建日期處理函數。
MySQL Date 函數
下面的表格列出了 MySQL 中最重要的內建日期函數:
| 函數 |
描述 |
| NOW() |
返回當前的日期和時間 |
| CURDATE() |
返回當前的日期 |
| CURTIME() |
返回當前的時間 |
| DATE() |
提取日期或日期/時間運算式的日期部分 |
| EXTRACT() |
返回日期/時間按的單獨部分 |
| DATE_ADD() |
給日期添加指定的時間間隔 |
| DATE_SUB() |
從日期減去指定的時間間隔 |
| DATEDIFF() |
返回兩個日期之間的天數 |
| DATE_FORMAT() |
用不同的格式顯示日期/時間 |
SQL Date 資料類型
MySQL 使用下列資料類型在資料庫中儲存日期或日期/時間值:
- DATE - 格式 YYYY-MM-DD
- DATETIME - 格式: YYYY-MM-DD HH:MM:SS
- TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS
- YEAR - 格式 YYYY 或 YY
Now()定義和用法
NOW() 函數返回當前的日期和時間。
例子 1
下面是 SELECT 語句:
SELECT NOW(),CURDATE(),CURTIME()
結果類似:
| NOW() |
CURDATE() |
CURTIME() |
| 2008-12-29 16:25:46 |
2008-12-29 |
16:25:46 |
CURDATE()定義和用法
CURDATE() 函數返回當前的日期。
例子 1
下面是 SELECT 語句:
SELECT NOW(),CURDATE(),CURTIME()
結果類似:
| NOW() |
CURDATE() |
CURTIME() |
| 2008-12-29 16:25:46 |
2008-12-29 |
16:25:46 |
CURTIME()定義和用法
CURTIME() 函數返回當前的時間。
執行個體
下面是 SELECT 語句:
SELECT NOW(),CURDATE(),CURTIME()
結果類似:
| NOW() |
CURDATE() |
CURTIME() |
| 2008-12-29 16:25:46 |
2008-12-29 |
16:25:46 |
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 |
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 |
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 |
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 |
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
結果:
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查詢本周、上周、本月、上個月份資料的sql代碼
查詢當前這周的資料
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,‘%Y-%m-%d‘)) = YEARWEEK(now());
查詢上周的資料
SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,‘%Y-%m-%d‘)) = YEARWEEK(now())-1;
查詢當前月份的資料
select name,submittime from enterprise where date_format(submittime,‘%Y-%m‘)=date_format(now(),‘%Y-%m‘)
查詢距離當前現在6個月的資料
select name,submittime from enterprise where submittime between date_sub(now(),interval 6 month) and now();
查詢上個月的資料
select name,submittime from enterprise where date_format(submittime,‘%Y-%m‘)=date_format(DATE_SUB(curdate(), INTERVAL 1 MONTH),‘%Y-%m‘)
select * from `user` where DATE_FORMAT(pudate,‘%Y%m‘) = DATE_FORMAT(CURDATE(),‘%Y%m‘) ;
select * from user where WEEKOFYEAR(FROM_UNIXTIME(pudate,‘%y-%m-%d‘)) = WEEKOFYEAR(now())
select *
from user
where MONTH(FROM_UNIXTIME(pudate,‘%y-%m-%d‘)) = MONTH(now())
select *
from [user]
where YEAR(FROM_UNIXTIME(pudate,‘%y-%m-%d‘)) = YEAR(now())
and MONTH(FROM_UNIXTIME(pudate,‘%y-%m-%d‘)) = MONTH(now())
select *
from [user]
where pudate between 上月最後一天
and 下月第一天
Mysql日期函數