mysql怎么计算生日,如何计算生日

mysql 计算离生日还有多少天,过了今年就按下年计算

public static void main(String[] args) throws Exception {

永春网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站建设等网站项目制作,到程序开发,运营维护。创新互联成立与2013年到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。

String birthday ="2000-02-29";

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");

Calendar cal = Calendar.getInstance();

int yearNow = cal.get(Calendar.YEAR);// 年

cal.setTime(formatter.parse(birthday));

int birthyear=cal.get(Calendar.YEAR);

while(birthyearyearNow){

cal.set(Calendar.YEAR,cal.get(Calendar.YEAR)+1);

birthyear=cal.get(Calendar.YEAR);

}

Date ed=new Date();

Date sd=cal.getTime();

long days=0;

if((ed.getTime() - sd.getTime()) / (3600 * 24 * 1000) 0 ){

days=(ed.getTime() - sd.getTime()) / (3600 * 24 * 1000);

System.out.println("距离你生日还有" + days + "天");

}else{

cal.set(Calendar.YEAR,cal.get(Calendar.YEAR)+1);

sd=cal.getTime();

days=(ed.getTime() - sd.getTime()) / (3600 * 24 * 1000);

System.out.println("距离你生日还有" + days + "天");

}

}

MySQL根据出生日期计算年龄的五种方法比较

以前使用mysql不是很多,对mysql的函数也不是很熟悉,遇到这个问题第一时间百度搜索,搜索到这两种方法,这两种方法是排在百度第一条的博客。

方法一,作者也说出了缺陷,就是当日期为未来日期时结果为0,而不是负数;这里使用了5个函数和两个运算符。

方法二,解决了方法一为负数的问题,但看起来更复杂;这里使用了6个函数和3个运算符。

看了这篇贴子后,我就晕了,怎么会这么复杂,以前用Sql Server很简单就可以了。我坚信一定有简单高效的方法。很快就找到了根据以上方法改良后的方法。

改良后的方法一,少了一个函数和一个运算符,当日期为未来日期时计算结果还是为0;

改良后的方法二,还是6个函数和3个运算符,看起来简单些;取日期的右边五位,当日期格式为‘2013-01-01’时取到的是‘01-01’,没有问题;当日期格式为‘2013-1-1’缩写格式时,取右边的五位取出的是‘3-1-1’,会导致出错。

然后自己根据MYSQL的帮助文档中的日期函数想到了第三种方法:

取生日和当前日期之前的天数除以一年的实际天数(365天5小时48分46秒),然后取整。这样只用了三个函数和一个运算符就搞定了。

然后,很快在国外网站找到了第四种方法:

这种方法只用了两个函数就搞定了,应该是最佳方法了。

测试了一下以上四种方法,假如当前日期为'2017-1-13',当生日为‘2013-1-14’时,还差一天就要过生日了,离4岁只 差一天了,结果还是3岁,感觉不是很合理;把方法三改造一下,四舍五入得到方法五:

这样计算出的年龄离实际的周岁最接近了,但可能方法四是最符合年龄定义的了。

6条比较有用的MySQL数据库操作的SQL语句小结

在MySQL数据库操作中,我们常常编写一些SQL语句来实现自己想要的功能。但是对于初学MySQL数据库的人来说这似乎又有一定的难度。本文我们总结了六条比较有用的SQL语句,初学者可以套用下面的格式,接下来就让我们一起来了解一下这部分内容。

1.计算年数

如果您想通过生日来计算这个人的年龄,可以用以下的语句来实现:

SELECT

DATE_FORMAT(FROM_DAYS(TO_DAYS(now())

-

TO_DAYS(@dateofbirth)),

'%Y')

+

0;

2.两个时间的差

取得两个

datetime

值的差。假设

dt1

dt2

datetime

类型,其格式为

‘yyyy-mm-dd

hh:mm:ss',那么它们之间所差的秒数为:UNIX_TIMESTAMP(

dt2

)

-

UNIX_TIMESTAMP(

dt1

)

除以60就是所差的分钟数,除以3600就是所差的小时数,再除以24就是所差的天数。

3.显示某一列出现过N次的值

SELECT

id

FROM

tbl

GROUP

BY

id

HAVING

COUNT(*)

=

N;

4.计算两个日子间的工作日

所谓工作日就是除出周六周日和节假日。

SELECT

COUNT(*)

FROM

calendar

WHERE

d

BETWEEN

Start

AND

Stop

AND

DAYOFWEEK(d)

NOT

IN(1,7)

AND

holiday=0;

5.查找表中的主键

SELECT

k.column_name

FROM

information_schema.table_constraints

t

JOIN

information_schema.key_column_usage

k

USING

(constraint_name,table_schema,table_name)

WHERE

t.constraint_type='PRIMARY

KEY'

AND

t.table_schema='db'

AND

t.table_name=tbl'

6.查看你的数库有多大

SELECT

table_schema

AS

'Db

Name',

Round(

Sum(

data_length

+

index_length

)

/

1024

/

1024,

3

)

AS

'Db

Size

(MB)',

Round(

Sum(

data_free

)

/

1024

/

1024,

3

)

AS

'Free

Space

(MB)'

FROM

information_schema.tables

GROUP

BY

table_schema

;

关于MySQL数据库的比较有用的SQL语句的介绍就到这里了.

在mysql中查询和你同一天生日的命令是什么?

这个题问题一般要提完整,别人才能回答,这里不知道你的表结构就很难给你弄。默认简单的在同一张表给你弄,select * from 表名 where 存储生日日期字段 = 你的生日。 这里存在数据库里的一般会是时间戳,你查询时把你生日转变成时间戳差就可以了


网站名称:mysql怎么计算生日,如何计算生日
网站地址:http://ybzwz.com/article/hciopd.html