今天我要做一個程序可以實現查詢一天,查詢一周,查詢一個月的數據功能,下面我把這些實現的sql日期查詢語句給大家總結分享一下。
我的日期
首先我們獲取到的日期格式是這樣的:2009-2-12或者2009-3-3或者2009-10-12,我們在組合sql語句的時候可以這樣:(分了三個例子)
這樣我們能夠查到所有包括2009-2-3並且大於2009-2-3的所有的用戶信息。
@2如果我們是這樣組合的
代碼如下 復制代碼 select * from user where birthday>'2009-2-3'那麼我們就會查到等於2009-2-3並且和大於2009-2-3號的所有信息。
@3如果我們是這樣的組合
代碼如下 復制代碼 select * from user where birthday<'2009-2-3'那麼我們會查詢到包括2009-2-3並且小於2009-2-3的所有用戶信息。
這裡可能是mysql自己的一個實現機制,不用寫=號,=號也包含在我們寫的sql語句中了。並且在組合這個sql語句的時候要注意''的用法,如果省去了''那麼我們就會吃大虧的。
還有2009-2-3這個數值的獲取
查詢一天:
代碼如下 復制代碼select * from table where to_days(column_time) = to_days(now());
select * from table where date(column_time) = curdate();
查詢一周:
代碼如下 復制代碼select * from table where DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= date(column_time);
查詢一個月:
代碼如下 復制代碼select * from table where DATE_SUB(CURDATE(), INTERVAL INTERVAL 1 MONTH) <= date(column_time);
使用MYSQL時間戳查詢時間段的常用函數
UNIX_TIMESTAMP(date)
如果沒有參數調用,返回一個Unix時間戳記(從’1970-01-01 00:00:00′GMT開始的秒數)。如果UNIX_TIMESTAMP()用一個date參數被調用,它返回從’1970-01-01 00:00:00′ GMT開始的秒數值。date可以是一個DATE字符串、一個DATETIME字符串、一個TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地時間的一個數字。
代碼如下 復制代碼mysql> select UNIX_TIMESTAMP();
-> 882226357
mysql> select UNIX_TIMESTAMP(’1997-10-04 22:23:00′);
-> 875996580
當UNIX_TIMESTAMP被用於一個TIMESTAMP列,函數將直接接受值,沒有隱含的“string-to-unix-timestamp”變換。
代碼如下 復制代碼FROM_UNIXTIME(unix_timestamp)
以’YYYY-MM-DD HH:MM:SS’或YYYYMMDDHHMMSS格式返回unix_timestamp參數所表示的值,取決於函數是在一個字符串還是或數字上下文中被使用。
代碼如下 復制代碼mysql> select FROM_UNIXTIME(875996580);
-> ‘1997-10-04 22:23:00′
mysql> select FROM_UNIXTIME(875996580) + 0;
-> 19971004222300
FROM_UNIXTIME(unix_timestamp,format)
返回表示 Unix 時間標記的一個字符串,根據format字符串格式化。format可以包含與DATE_FORMAT()函數列出的條目同樣的修飾符。
代碼如下 復制代碼mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(), ‘%Y %D %M %h:%i:%s %x’);
-> ‘1997 23rd December 03:43:30 x’
通過 UNIX_TIMESTAMP 函數把 MySQL 數據庫中的 date 類型數據轉換成 unix timestamp 形式的一個整形數字:select UNIX_TIMESTAMP(’2006-02-28′) testdate;