mysql日期函数怎么算 mysql日期函数

mysql日期函数

DATE_ADD是时间计算函数。DATE_ADD(TIME,

目前成都创新互联已为上千家的企业提供了网站建设、域名、网络空间、网站托管、服务器托管、企业网站设计、勃利网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

INTERVAL

)

NOW()函数返回的是SQL命令执行的复当前时间;制

INTERVAL

-1

DAY

的意思就是向前1天(

时间

-

1天)

等同于

INTEVAL

-24

HOUR

如果你想向后一天,就可以写zdINTERVAL

1

DAY;或者

INTERVAL

24

HOUR

都是可以的

求教MYSQL的日期函数

EXTRACT(type FROM date)从date中返回“type”的值。

MONTH(date) 返回date的月份,范围1到12。

MINUTE(date) 返回date的分钟,范围是0到59。

返回月份匹配的结果集

SELECT *

FROM tableA

WHERE EXTRACT(MONTH FROM NOW( )) =

EXTRACT(MONTH FROM logtime)

SELECT *

FROM tableA

WHERE MONTH(NOW( )) =

MONTH(logtime)

返回分钟匹配的结果集

SELECT *

FROM tableA

WHERE EXTRACT(MINUTE FROM NOW( )) =

EXTRACT(MINUTE FROM logtime)

SELECT *

FROM tableA

WHERE MINUTE(NOW( )) =

MINUTE(logtime)

你可以用年和月一起比较啊,去年,前年都不成问题,你原来问题没有说清楚前提和背景。

想查x个月以前的信息

if当前月=x

SELECT *

FROM tableA

WHERE MONTH(logtime) =(12-x+MONTH(NOW( ))) AND YEAR(logtime)YEAR(NOW())

else

SELECT *

FROM tableA

WHERE MONTH(logtime) =(MONTH(NOW( )-x) AND YEAR(logtime)=YEAR(NOW())

在date的分钟上加上x分钟: DATE_ADD(date,INTERVAL x MINUTE);

MYSQL中也有DATEDIFF函数

DATEDIFF(expr,expr2)

DATEDIFF() 返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2 为日期或 date-and-time 表达式。计算中只用到这些值的日期部分

很明显和MSSQL里的datefiff形同神异,并没有过多的参数,只能比较天的差别。

所以在MySQL要加上自己的处理才行。

如何利用MySQL函数查询特定的日期时间

MySQL数据库中year()函数是求某个特定日期中的年份,代码如下:

select

'2015-08-11'

as

date,year('2015-08-11')

as

year;

确定一个日期是一年中的第几个季度,可以用QUARTER()函数实现,代码如下:

SELECT

'2015-08-11'

AS

DATE,QUARTER('2015-08-11')

AS

QUARTER;

返回一个日期是一年中的月份,利用month()函数实现,代码如下:

SELECT

'2015-08-11'

AS

DATE,MONTH('2015-08-11')

AS

MONTH;

获取一个确定日期是一个月份中的多少号,可以用day()函数求得,具体实现代码如下:

SELECT

'2015-08-11'

AS

DATE,DAY('2015-08-11')

AS

DAY;

有时日期中带有时间,而如何获取小时数,这可以利用自带的函数hour()实现,代码如下:

SELECT

'2015-08-11

12:20:45'

AS

DATE,HOUR('2015-08-11

12:20:45')

AS

HOUR;

求取日期时间中的分钟数,可以利用MINUTE()函数实现,代码如下:

SELECT

'2015-08-11

12:20:45'

AS

DATE,MINUTE('2015-08-11

12:20:45')

AS

MINUTE;

最后,获取时间中的秒数,利用SECOND()函数实现,代码如下:

SELECT

'2015-08-11

12:20:45'

AS

DATE,SECOND('2015-08-11

12:20:45')

AS

SECOND;

mysql date函数怎么用

以每24小时作为一份时间(而非自然日),根据用户的配置有两种工作模式:带状模式中,用户仅定义开始日期时,从开始日期(含)开始,每份时间1个分片地无限增加下去;环状模式中,用户定义了开始日期和结束日期时,以结束日期(含)和开始日期(含)之间的时间份数作为分片总数(分片数量固定),以类似取模的方式路由到这些分片里。

1. DBLE 启动时,读取用户在 rule.xml 配置的 sBeginDate 来确定起始时间

2. 读取用户在 rule.xml 配置的 sPartionDay 来确定每个 MySQL 分片承载多少天内的数据

3. 读取用户在 rule.xml 配置的 dateFormat 来确定分片索引的日期格式

4. 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的时间类型

5. 然后求分片索引值与起始时间的差,除以 MySQL 分片承载的天数,确定所属分片

1. DBLE 启动时,读取用户在 rule.xml 配置的起始时间 sBeginDate、终止时间 sEndDate 和每个 MySQL 分片承载多少天数据 sPartionDay

2. 根据用户设置,建立起以 sBeginDate 开始,每 sPartionDay 天一个分片,直到 sEndDate 为止的一个环,把分片串联串联起来

3. 读取用户在 rule.xml 配置的 defaultNode

4. 在 DBLE 的运行过程中,用户访问使用这个算法的表时,WHERE 子句中的分片索引值(字符串),会被提取出来尝试转换成 Java 内部的日期类型

5. 然后求分片索引值与起始日期的差:如果分片索引值不早于 sBeginDate(哪怕晚于 sEndDate),就以 MySQL 分片承载的天数为模数,对分片索引值求模得到所属分片;如果分片索引值早于 sBeginDate,就会被放到 defaultNode 分片上

与MyCat的类似分片算法对比

中间件

DBLE

MyCat

分片算法种类 date 分区算法 按日期(天)分片

两种中间件的取模范围分片算法使用上无差别

开发注意点

【分片索引】1. 必须是字符串,而且 java.text.SimpleDateFormat 能基于用户指定的 dateFormat 来转换成 java.util.Date

【分片索引】2. 提供带状模式和环状模式两种模式

【分片索引】3. 带状模式以 sBeginDate(含)起,以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,理论上分片数量可以无限增长,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)

【分片索引】4. 环状模式以 86400000 毫秒(24 小时整)为一份,每 sPartionDay 份为一个分片,以 sBeginDate(含)到 sEndDate(含)的时间长度除以单个分片长度得到恒定的分片数量,但是出现 sBeginDate 之前的数据而且没有设定 defaultNode 的话,会路由失败(如果有 defaultNode,则路由至 defaultNode)

【分片索引】5. 无论哪种模式,分片索引字段的格式化字符串 dateFormat 由用户指定

【分片索引】6. 无论哪种模式,划分不是以日历时间为准,无法对应自然月和自然年,且会受闰秒问题影响

运维注意点

【扩容】1. 带状模式中,随着 sBeginDate 之后的数据出现,分片数量的增加无需再平衡

【扩容】2. 带状模式没有自动增添分片的能力,需要运维手工提前增加分片;如果路由策略计算出的分片并不存在时,会导致失败

【扩容】3. 环状模式中,如果新旧 [sBeginDate,sEndDate] 之间有重叠,需要进行部分数据迁移;如果新旧 [sBeginDate,sEndDate] 之间没有重叠,需要数据再平衡

配置注意点

【配置项】1. 在 rule.xml 中,可配置项为 propertyname="sBeginDate" 、 propertyname="sPartionDay" 、 propertyname="dateFormat" 、 propertyname="sEndDate" 和 propertyname="defaultNode"

【配置项】2.在 rule.xml 中配置 propertyname="dateFormat",符合 java.text.SimpleDateFormat 规范的字符串,用于告知 DBLE 如何解析sBeginDate和sEndDate

【配置项】3.在 rule.xml 中配置 propertyname="sBeginDate",必须是符合 dateFormat 的日期字符串

【配置项】4.在 rule.xml 中配置 propertyname="sEndDate",必须是符合 dateFormat 的日期字符串;配置了该项使用的是环状模式,若没有配置该项则使用的是带状模式

【配置项】5.在 rule.xml 中配置 propertyname="sPartionDay",非负整数,该分片策略以 86400000 毫秒(24 小时整)作为一份,而 sPartionDay 告诉 DBLE 把每多少份放在同一个分片

【配置项】6.在 rule.xml 中配置 propertyname="defaultNode" 标签,非必须配置项,不配置该项的话,用户的分片索引值没落在 mapFile 定义


标题名称:mysql日期函数怎么算 mysql日期函数
地址分享:http://myzitong.com/article/ddcpsse.html