开发中经常会遇到时间段检查冲突问题,比如预约时间段检查等 判断给定的时间段是否和当前表中的时间段不重叠,只要判断给定的开始时间大于记录中的结束时间,或者给定的结束时间小于记录中的开始时间; 也就是判断重叠,给定的开始时间最小值小于记录中的结束时间最大值并且给定的结束时间最大值大于记录中的开始时间最小值,则一定重叠! 假设数据库表t_table 存的开始时间和结束时间是start_date和end_date 两种方式: SELECT * FROM t_table WHERE (start_date > :sta…

2021-09-12 0条评论 14点热度 0人点赞 admin 阅读全文

需要新增一个MySQL的用户,希望可以在某个IP地址段(例如192.168.1.* 或者172.16.0.0/12)来访问MySQL服务器 创建用户 CREATE USER 给用户赋权限 GRANT CREATE USER创建用户和GRANT ALL权限命令现在是可以支持子网的, @后面跟着地址段/子网,可以以下两种方式: @'%' 表示允许全部 (不建议!!!) @'192.168.1.0/255.255.255.0' 注意,不能是这么写(本人已测试)@'192.168.1.0/24' @'192.168.1.%…

2021-07-29 0条评论 192点热度 0人点赞 admin 阅读全文

表中有一个字段创建日期create_date(datetime),需要再新建一个虚拟字段create_day(int),显示创建的天,如今天:20210720,方面程序的调用和统计,create_day是和create_date关联的,不需要新增一个普通的字段,然后特别的录入,只要根据create_date自动计算出来就可以了。 表结构如下: mysql> desc t_account; +-------------+--------------+------+-----+---------+--------…

2021-07-20 0条评论 106点热度 0人点赞 admin 阅读全文

MySQL插入数据的时候,如果遇到UniqueKey(唯一键)已经存在的情况下,通常情况下按报错处理,所以想要的结果是,只有当UK不存在的情况下才执行插入操作。 假设这样一张表t_student学生表,stu_no是学生编号,是唯一值: mysql> ALTER TABLE t_student ADD UNIQUE INDEX stu_no_uk1(stu_no); mysql> desc t_student; +-------------+--------------+------+-----+---…

2021-07-19 0条评论 82点热度 0人点赞 admin 阅读全文

新建一个数据库表的字段int类型,Java下准备存System.currentTimeMillis(),记录毫秒数,结果返回错误: 2021-07-12 19:52:19 [WARN]SqlExceptionHelper - SQL Error: 1264, SQLState: 22001 2021-07-12 19:52:19 [ERROR]SqlExceptionHelper - Data truncation: Out of range value for column 'last_event_time' a…

2021-07-13 0条评论 155点热度 0人点赞 admin 阅读全文

如题,SQL下,想要知道两个时间相隔多少(持续时间) 假设表table1的两个字段date1和date2都是datetime类型,使用TO_NUMBER(date1-date2)可以得到时间的天数(小数),想要得到其他的时间单位,只要在天数上做换算就可以了,如下: -- 得到当前日期的毫秒数(和1970年相比) --使用round后得到整数 SELECT ROUND(TO_NUMBER(SYSDATE-to_date('1970-01-01 00:00:00','yyyy-mm-dd hh24:mi:ss')) *…

2021-05-19 0条评论 195点热度 0人点赞 admin 阅读全文

在截断truncate一张表以后,表的ID是自增长的(auto_increment),用软件或者SQL去查这个auto_increment的值的时候,发现并没有回到初始值(1) 另外如果手工去修改自增长的值,再用软件或SQL去查,也会发现并没有能查到是回到修改后的自增长值。 -- 查了一下my_prj1.t_test表的AUTO_INCREMENT值现在是100 SELECT AUTO_INCREMENT FROM INFORMATION_SCHEMA.TABLES where table_schema='my_p…

2021-04-06 0条评论 190点热度 0人点赞 admin 阅读全文

在写SQL语句的时候,有时候需要将多行的数据合并到一行上,比如在联合其他一对多的表的时候,或者在做group分组的时候。 举个例子,有一个部门表t_department(id, name),一个员工表t_staff(id, name, sex, department_id), 两者是一对多的关系, 需求1 select 部门表,以及部门里的员工的姓名,都逗号隔开:1, '财务部','张三,李四,王五' 需求2 select 员工表,按男女分组,列出人名:'男','张三,李四' '女','王五' -- 联合其他表的情…

2021-02-28 0条评论 185点热度 0人点赞 admin 阅读全文

在使用SQL查询的时候,一般排序的时候,会根据order by column asc/desc,来根据某个字段的降序或者升序来排列,但是有时候,需要我们指定的特定序列来排列。 比如有一个表(动物表)t_animal(id,name,type_name),根据栏位:type_name 特定的顺序来排列(type_name里有tiger cat dog)我们就要根据tiger dog cat这3个类型的现在这样的顺序来排列,SQL如下 SELECT id, name, type_name FROM t_animal O…

2021-02-23 0条评论 139点热度 0人点赞 admin 阅读全文

比如执行SUM的时候,如果没有数据,有时候会返回NULL,但我们有时候希望返回0,可以简化程序的判断 NVL(Expr1,Expr2) --如果Expr1为NULL,返回Expr2的值,否则返回Expr1的值 select NVL(SUM(MONEY) ,0) from TEST_TABLE select COALESCE(sum(momeny),0) as sm from test_table ...    

2021-01-07 0条评论 206点热度 0人点赞 admin 阅读全文
12