开发人员有时候使用类似下面SQL将字符串转换为日期时间类型,乍一看,这样的SQL的写法是没有什么问题的。但是这样的SQL其实有时候就是一个定时炸弹,随时可能出现问题(),下面简单对这种情况进行一个简单概括。
1
|
SELECTCONVERT(DATETIME,'2020-01-13 6:46:42');
|
如果你将连接数据库的登录名的默认语言修改为Aribc,然后去执行上面SQL语句,就会遇到错误,为什么呢?
为什么上面SQL的日期转换出错了呢?其实是因为登录名修改默认语言后,会话对应的date_format变化了,从mdy变成了dmy,所以上面转换就报错了,有时候不报错,但是可能转换成一个错误日期,产生了逻辑错误,这个反而是一个跟糟糕的隐性错误。等你发现的时候,可能已经产生大量错误数据了。
SELECTsession_id
,program_name
,client_interface_name
,language
,date_format
FROMsys.dm_exec_sessions
WHEREsession_id = 53;
|
关于不同语言的默认date_format,可以使用下面命令查看:
1
|
sp_helplanguage'us_english'
|
另外一种情况,如果当前会话使用SET命令修改过DATEFORMAT,也会遇到这个错误,如下所示:
1
2
3
|
SETDATEFORMAT DMY;
GO
SELECTCONVERT(DATETIME,'2020-01-13 6:46:42');
|
这种情况就比较复杂了,有可能是某一段SQL里面设置了DATEFORMAT,导致整个会话后面的日期格式全部变化了。所以上面这种SQL的“健壮性”就比较差,在平时就要避免写出这样的SQL,如果你使用这样的SQL,不管是会话的默认语言变化了,还是当前会话的DATEFORMAT变化了,都不会产生错误或逻辑错误。
1
|
SELECTCONVERT(DATETIME,'2020-01-13 6:46:42', 120)。
|
平时遇到这种日期转换,就一定要明确指定转换格式,让其不要受会话的DATEFORMAT变化影响,书写健壮、可靠的SQL语句,下面这两个简单SQL的细微差别,也可判别一个人是否用有书写健壮性SQL的意识!
1
2
|
SELECTCONVERT(DATETIME,'2020-01-13 6:46:42');
SELECTCONVERT(DATETIME,'2020-01-13 6:46:42', 120)
|
不少新手用户,以为文件传上去就代表网站安装好了,这是错误的。
PHP去除BOM的方法:首先创建一个PHP代码文件;然后设置文件目录;接着定义一个“checkdir”以及“checkBOM”方法;最后将此代码文件放到根目录下并运行即可。
自己在调用接口时候,因为用到了对方提供的封装方法,在输出一组数据时候一直显示错误,最后想到可能对方给的方法里面含有编码问题(具有BOM头),所以上网搜索到一个检测BOM的方法并且可以去除重新生成新文件,运用之后就能正常显示数据了。
什么是BOM头?
解决方法:
# 这里代码为PHP方式去除当前目录及字目录所有文件BOM信息,只要将此代码文件放到根目录下,然后浏览器运行访问就可以了
今天再给表加字段的时候,发现数据库报错,总是不能加入数据显示(Errcode: 28 - No space left on device), Time: 0.102000s这么一个错误。空间已满,这种情况一般是由于某个程序的日志较多造成的。
我们执行df -lh。查看写磁盘情况,发现/dev/vda1 40G 38G 0 100% /
达到了100%。
我们再执行du -sh /* .就可以发现哪个文件夹内容较多了。然后我们就可以一级一级的执行该方法,知道找到最终的日志文件就可以了。然后清理下我们不需要的日志文佳,数据库就正常了。
今天帮客户解决了一个数据库出现了一个数据库时区的错误问题:The server time zone value 'ÖD1ú±ê׼걼ä' is unrecognized or represents more than one time
解决办法:
控制台执行以下命令
show variables like '%time_zone%'; set global time_zone='+8:00';
帮用户解决了一个Mysql8.0版本安装之后出现MySQL服务无法启动请键入 NET HELPMSG 3534 以获得更多的帮助,下面小编把解决办法与大家分享一下。
因为不是出现的:服务名无效。的错误也就表明现在的服务已经属于系统服务了,不是环境变量的问题。小编就打开了mysql的安装目录,然后发现没有data文件夹以及my.ini文件。下面小编就给出相应的解决办法:
没有文件夹以及里面的内容。
解决办法:
以此执行下面的命令:
没有my.ini文件
解决办法:
输入以下内容(记得修改路径):
[client] port=3306 [mysql] default-character-set=utf8 [mysqld] port=3306 # 设置mysql的安装目录 basedir="E:/MySQL/" # 设置mysql数据库的数据的存放目录 datadir="E:/MySQL/data/" character-set-server=utf8 default-storage-engine=MyISAM #支持 INNODB 引擎模式。修改为 default-storage-engine=INNODB 即可。 #如果 INNODB 模式如果不能启动,删除data目录下ib开头的日志文件重新启动。 sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION" max_connections=512 query_cache_size=0 table_cache=256 tmp_table_size=18M thread_cache_size=8 myisam_max_sort_file_size=64G myisam_sort_buffer_size=35M key_buffer_size=25M read_buffer_size=64K read_rnd_buffer_size=256K sort_buffer_size=256K innodb_additional_mem_pool_size=2M innodb_flush_log_at_trx_commit=1 innodb_log_buffer_size=1M innodb_buffer_pool_size=47M innodb_log_file_size=24M innodb_thread_concurrency=8 innodb_thread_concurrency=8 innodb_thread_concurrency=8 innodb_thread_concurrency=8 innodb_thread_concurrency=8
在生活中,有时候我们可能会收到一些完成数量跟完成总数,这个时候需要让我们通过Excel来求出这些数据的完成率,那么我们该如何操作呢?接下来就给大家演示一下如何在Excel里设置完成率公式。
在Excel里设置完成率公式方法:
在WPS中新建一个Excel工作簿,如下图所示:
在完成率中输入公式=完成数量/总数,也即=a2/b2(千万不要忘记等号哦),如下图所示:
输入公式后,按回车键(enter)即可得到完成率,如图:
点击左键下拉,即可批量计算完成率,如图:
在菜单栏中左键点击“常规”右边的小箭头,在出来的所有选项中左键单击选择“百分比”,如图:
松开左键,即可得到百分数形式的完成率,格式就美观正规很多了,如图:
查看MySQL的访问IP权限
# 进入mysql docker exec -it mysql /bin/bash mysql -u root -p # 设置本地IP才可以访问127.0.0.1改为本地公网IP GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'root' # 刷新权限 flush privileges; exit docker restart mysql
免费试用尝鲜
贴心会员服务
服务可用性
数据安全保障
全年不间断在线
工作时间:早上9:00-下午6:30
河南快米云网络科技有限公司
公安备案编号:41010302002363
Copyright © 2010-2023 All Rights Reserved. 地址:河南自由贸易区开封片区经济开发区宋城路122号