日期处理和时间处理

日期和时间处理函数

函数 说明
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中第一次引入的。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于加密 在解释SSH、SSL与HTTPS协议之前我先介绍一下非对称加密协议。在1976年以前,所有的加密都采用对...
    我在睡觉阅读 31,410评论 14 52
  • 这周由于五一放假,没开例会。一上午的时间想用大部分的时间来学区块链,但又想着,会还是要看的,一方面说问题,一...
    40岁重生阅读 441评论 0 0
  • 为人民无愧于心(义工) 华南区 舒广怀 报道 12月1日,东望湖南溆浦课堂的志愿者们在主办方向兴文老师的带领下,...
    黎明的曙光宝阅读 4,097评论 0 1
  • 作为一枚九零后小硕士,我已经是两个女儿的妈妈。别人总是艳羡的开玩笑说我是人生赢家,但这几年吃的苦熬的累只有我自己心...
    一米阳光的爱阅读 2,615评论 0 1
  • 看不惯,是格局太小,境界太低。看不惯世态,是修为不够,见识太浅。人生不如意事十有八九,但常想一二。也不至于活的那么...
    楼满风_c524阅读 8,591评论 2 2

友情链接更多精彩内容