美文网首页
日期处理和时间处理

日期处理和时间处理

作者: qyfl | 来源:发表于2019-03-19 09:04 被阅读0次

    日期和时间处理函数

    函数 说明
    AddDate() 增加一个日期(天、周等)
    AddTime() 增加一个时间(时、分等)
    CurDate() 返回当前日期
    CurTime() 返回当前时间
    Date() 返回日期时间的日期部分
    DateDiff() 计算两个日期之差
    Date_Add() 高度灵活的日期运算函数
    Date_Format() 返回一个格式化的日期或时间串
    Day() 返回一个日期的天数部分
    DayOfWeek() 对于一个日期,返回对应的星期几
    Hour() 返回一个时间的小时部分
    Minute() 返回一个时间的分钟部分
    Month() 返回一个日期的月份部分
    Now() 返回当前日期和时间
    Second() 返回一个时间的秒部分
    Time() 返回一个日期时间的时间部分
    Year() 返回一个日期的年份部分
    SELECT cust_id, order_num
    FROM orders
    WHERE order_date = '2005-09-01';
    

    此SELECT语句正常运行。它检索出一个订单记录,该订单记录的order_date为2005-09-01。

    但是,使用WHERE order_date = '2005-09-01' 可靠吗? order_ date 的数据类型为 datetime。这种类型存储日期及时间值。样例表中的值全都具有时间值 00:00:00,但实际中很可能并不总是这样。如果用当前日期和时间存储订单日期(因此你不仅知道订单日期,还知道 下订单当天的时间),怎么办?比如,存储的order_date值为 2005-09-01 11:30:05,则WHERE order_date = '2005-09-01'失败。即使给出具有该日期的一行,也不会把它检索出来,因为WHERE匹配失败。

    解决办法是指示 MySQL 仅将给出的日期与列中的日期部分进行比 较,而不是将给出的日期与整个列值进行比较。为此,必须使用 Date() 函数。Date(order_date) 指示 MySQL 仅提取列的日期部分,更可靠的 SELECT 语句为:

    SELECT cust_id, order_num
    FROM orders
    WHERE Date(order_date) = '2005-09-01';
    

    如果要的是日期,请使用Date() 如果你想要的仅是日期, 则使用Date()是一个良好的习惯,即使你知道相应的列只包 含日期也是如此。这样,如果由于某种原因表中以后有日期和 时间值,你的SQL代码也不用改变。当然,也存在一个Time() 函数,在你只想要时间时应该使用它。
    Date()和Time()都是在MySQL 4.1.1中第一次引入的。

    相关文章

      网友评论

          本文标题:日期处理和时间处理

          本文链接:https://www.haomeiwen.com/subject/uqpwmqtx.html