日期处理和时间处理

2019-03-19  本文已影响0人  qyfl

日期和时间处理函数

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

上一篇下一篇

猜你喜欢

热点阅读