zoukankan      html  css  js  c++  java
  • MySQL日期 专题

    一、MySQL 获得当前日期时间 函数 
    1.1 获得当前日期+时间(date + time)函数:now() 

    mysql> select now();
    +---------------------+
    | now()              |
    +---------------------+
    | 2008-08-08 22:20:46 |
    +---------------------+

    除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: 

    current_timestamp()
    ,current_timestamp
    ,localtime()
    ,localtime
    ,localtimestamp    -- (v4.0.6)
    ,localtimestamp()  -- (v4.0.6)

    这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。 

    1.2 获得当前日期+时间(date + time)函数:sysdate() 
    sysdate() 日期时间函数跟 now() 类似,
    不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了: 
    mysql> select now(), sleep(3), now();
    +---------------------+----------+---------------------+
    | now()              | sleep(3) | now()              |
    +---------------------+----------+---------------------+
    | 2008-08-08 22:28:21 |        0 | 2008-08-08 22:28:21 |
    +---------------------+----------+---------------------+

    mysql> select sysdate(), sleep(3), sysdate();
    +---------------------+----------+---------------------+
    | sysdate()          | sleep(3) | sysdate()          |
    +---------------------+----------+---------------------+
    | 2016-08-08 22:28:41 |        0 | 2016-08-08 22:28:44 |
    +---------------------+----------+---------------------+
    可以看到,虽然中途 sleep 3 秒,
    但 now() 函数两次的时间值是相同的; sysdate() 函数两次得到的时间值相差 3 秒。
    MySQL Manual 中是这样描述 sysdate() 的:Return the time at which the function executes。 
    sysdate() 日期时间函数,一般情况下很少用到。 

    2. 获得当前日期(date)函数:curdate() 
    mysql> select curdate();
    +------------+
    | curdate()  |
    +------------+
    | 2008-08-08 |
    +------------+
    其中,下面的两个日期函数等同于 curdate(): 
    current_date(),current_date

            SELECT * from test_class
            WHERE class_id !=#{classId}
            <![CDATA[
            and lesson_end<=CURDATE()
            ]]>
            ORDER BY id DESC

    3. 获得当前时间(time)函数:curtime() 

    mysql> select curtime();
    +-----------+
    | curtime() |
    +-----------+
    | 22:41:30  |
    +-----------+
    其中,下面的两个时间函数等同于 curtime(): 
    current_time(),current_time

    4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp() 
    mysql> select utc_timestamp(), utc_date(), utc_time(), now()
    +---------------------+------------+------------+---------------------+
    | utc_timestamp()    | utc_date() | utc_time() | now()              |
    +---------------------+------------+------------+---------------------+
    | 2008-08-08 14:47:11 | 2008-08-08 | 14:47:11  | 2008-08-08 22:47:11 |
    +---------------------+------------+------------+---------------------+
    因为我国位于东八时区,所以本地时间 = UTC 时间 + 8 小时。UTC 时间在业务涉及多个国家和地区的时候,非常有用。 

    http://blog.csdn.net/aidenliu/article/details/5465300

    如何采用MySQL内置函数获取指定时间之前的日期呢?

    SELECT DATE(createTime) date型
    SELECT DATE_FORMAT(createTime, '%Y-%m-%d') varchar类型

    下面的一大堆相关介绍,在网上复制过来的:

     mySQL中常用日期时间函数:

    select something from table_name where DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= date_col; 获取30天前的日期。

    select date_sub(now(),interval 1 year); 获取一年前的今天的日期
    select date_sub(now(),interval 1 week); 获取一周前的日期
    select date_sub(now(),interval 1 month); 获取一个月前的日期

    date_sub()函数:
    DATE_SUB(date,INTERVAL expr type)

    SELECT NOW(),DATE_SUB(NOW(),INTERVAL 1 HOUR) as the_time

    select * from xxx where create_time > DATE_SUB(NOW(),INTERVAL 1 HOUR);

    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 PM
    12-29-2008
    29 Dec 08
    29 Dec 2008 16:25:46.635
    
    

    select UNIX_TIMESTAMP('2011-05-31 23:59:59');
    select from_unixtime(1306771200);

    SELECT NOW();
    select from_unixtime(1399537700);
    select UNIX_TIMESTAMP(NOW()) * 1000;

    SELECT
        begin_time,
        date_format(
            from_unixtime((begin_time / 1000)),
            '%Y-%m-%d'
        ),
        date_format(
            from_unixtime((begin_time / 1000)),
            '%Y-%m-%d %T:%f'
        )
    FROM
        tb_test



    **需要注意的是select UNIX_TIMESTAMP(NOW()) 输出的是,java中System.currentTimeMillis()输出的是毫秒,需要先除以1000再使用mysql的函数

    mysql与日期相关的函数:

    下面的查询选择了所有记录,其date_col的值是在最后30天以内:

    mysql> SELECT something FROM table
    WHERE TO_DAYS(NOW()) - TO_DAYS(date_col)<= 30;

    DAYOFWEEK(date)
    返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。
    mysql> select DAYOFWEEK('1998-02-03');
    -> 3

    WEEKDAY(date)
    返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
    mysql> select WEEKDAY('1997-10-04 22:23:00');
    -> 5
    mysql> select WEEKDAY('1997-11-05');
    -> 2

    DAYOFMONTH(date)
    返回date的月份中日期,在1到31范围内。
    mysql> select DAYOFMONTH('1998-02-03');
    -> 3

    DAYOFYEAR(date)
    返回date在一年中的日数, 在1到366范围内。
    mysql> select DAYOFYEAR('1998-02-03');
    -> 34

    MONTH(date)
    返回date的月份,范围1到12。
    mysql> select MONTH('1998-02-03');
    -> 2

    DAYNAME(date)
    返回date的星期名字。
    mysql> select DAYNAME("1998-02-05");
    -> 'Thursday'

    MONTHNAME(date)
    返回date的月份名字。
    mysql> select MONTHNAME("1998-02-05");
    -> 'February'

    QUARTER(date)
    返回date一年中的季度,范围1到4。
    mysql> select QUARTER('98-04-01');
    -> 2

    WEEK(date)  
    WEEK(date,first)
    对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1,从星期一开始。

    mysql> select WEEK('1998-02-20');
    -> 7
    mysql> select WEEK('1998-02-20',0);
    -> 7
    mysql> select WEEK('1998-02-20',1);
    -> 8

    YEAR(date)
    返回date的年份,范围在1000到9999。
    mysql> select YEAR('98-02-03');
    -> 1998

    HOUR(time)
    返回time的小时,范围是0到23。
    mysql> select HOUR('10:05:03');
    -> 10

    MINUTE(time)
    返回time的分钟,范围是0到59。
    mysql> select MINUTE('98-02-03 10:05:03');
    -> 5

    SECOND(time)
    回来time的秒数,范围是0到59。
    mysql> select SECOND('10:05:03');
    -> 3

    http://blog.csdn.net/amber_room/article/details/7024896

  • 相关阅读:
    python的参数传递
    django的objects级别的权限控制
    django如何将mysql数据库转化为model
    django的orm查询使用in的保序
    多用户OFDM系统资源分配研究
    第一代到第四代多址技术:从FDMA、TDMA、CDMA到OFDMA
    Kaggle比赛总结
    4 二维数组中的查找 JavaScript
    5 替换空格 JavaScript
    简单的HTTP协议
  • 原文地址:https://www.cnblogs.com/softidea/p/6120727.html
Copyright © 2011-2022 走看看