在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语句的介绍就到这里了.
select year(日期),month(日期),is_working_day,count(*) from table group by is_working_day order by year(日期),month(日期);
mysql的写法,如果sqlserver,
year(日期),month(日期) 换成
DateName(year,日期),DateName(month,日期)
1. table_name要换成你的表名:
select adddate(xxdate, 20) as new_date
from table_name
where dayofweek(new_date) 1 and dayofweek(new_date) 7;
对于DAYOFWEEK()函数,返回值: 1=Sunday, 2=Monday, 3=Tuesday, 4=Wednesday, 5=Thursday, 6=Friday, 7=Saturday.
2. 需要你先创建这么一列日期,然后统计天数的时候排出周末就可以了。
select count(new_date)
from table_name
where dayofweek(new_date) 1 and dayofweek(new_date) 7;
基本思路是需要查询不是周日且不在第2,4周内
加上以下条件:
WHERE WEEKDAY(日期字段)6 AND ((DAY(日期字段)+WEEKDAY(日期字段-INTERVAL DAY(日期字段) DAY)) DIV 7 + 1) NOT IN (2,4)
如果对您有些许帮助请采纳。
售后响应及时
7×24小时客服热线数据备份
更安全、更高效、更稳定价格公道精准
项目经理精准报价不弄虚作假合作无风险
重合同讲信誉,无效全额退款