作者:中孝雪瑶诗涵 | 来源:互联网 | 2023-08-11 17:43
数据库|mysql教程数据库,存储,日期,字段,类型,到底,应该,varchar,数据库-mysql教程cps广告联盟源码,vscode默认位置,h3c服务器装ubuntu,tom
数据库|mysql教程
数据库,存储,日期,字段,类型,到底,应该,varchar,
数据库-mysql教程
cps广告联盟源码,vscode默认位置,h3c服务器装ubuntu,tomcat内存监测,c 读取sqlite数据,步骤流程插件,vv7前端框架总成,简述网络爬虫的流程,iis php5.3,游戏seo优化,外国网站后台设计,ckplayer-超酷网页视频播放器,小程序模板制作lzw
背景: 前段时间在百度经验看到一篇文章《怎样在电脑右下角显示你(爱人)的名字》,之前也听过这个小技巧,但没真正动手设置过,所以出于好奇就实践了一下。 设置完毕后的效果如下,右下角的时间区域增加了我的名字 Danny : 以上为背景。没想到这个小技巧给
银行归属查询 源码,ubuntu的文件管理,tomcat控制台部分乱码,爬虫框架解读,php语言搭建教程交流,seo187lzw
分类目录整站源码,vscode怎么设置标签间隔,复制文件ubuntu,请求无法连上tomcat,爬虫分析网页,php表单默认值,莱州关键词seo优化,wordpress还原网站源码,dede 多个文章模板下载lzw
背景:
前段时间在百度经验看到一篇文章《怎样在电脑右下角显示你(爱人)的名字》,之前也听过这个小技巧,但没真正动手设置过,所以出于好奇就实践了一下。
设置完毕后的效果如下,右下角的时间区域增加了我的名字 “Danny” :
lblCreateTime.Text = Convert.ToDateTime(news.CreateTime).ToString(); //【注】:lblCreate为前端显示页面一个Lable;news为查询后得到的“新闻”实体类,CreateTime为它的一个字段
猜测是我本机电脑时间格式的问题,在客户端获取了一下时间news.CreateTime的值,格式为:“2014/8/23 星期六 Danny 12:42:10”,而该条记录的时间在数据库中存储的值为 “2014-08-23 12:42:10”。经过测试,如果news.CreateTime在数据库中存储的类型为varchar(),则不会产生此错误。于是可以知道,这里时间格式转化的过程是这样的:
DataTable dt = new NewsManager().SelectById(newsid); //这里得到的dt为从直接数据库中查询到的数据 repNews.DataSource =dt; repNews.DataBind();
前台关键代码:
发布时间:
其实,大部分系统中的时间格式,那些格式转化函数还是“认识”的,但假如有的将自己的系统时间格式设置为“2014/8/23 星期六Danny 12:42:10”,有的设置为“2014/8/23 星期六胡玉洋 12:42:10”……,这些函数肯定猜不到那么多中自定义的情况。
所以,在设计软件的过程中,最好把客户端这个因素刨除在外,保证各种使用环境的兼容性,时间在数据库中产生,同样显示时也只显示数据库中的时间(避免客户端的过滤)。
2、将数据库中存储时间的数据类型改为varchar(),不过这时最好让这些时间是数据库中自动生成的(一个没有格式的输入也可能会导致输出错误),因为存储类型为varchar(),所以获取到的值也就被认为是一个字符串,这时在转换时间格式时就少了上图中【将获取的时间转化为客户端时间格式下的值】的步骤,直接将数据库中的时间字符串进行转化(这时那些转化函数是能识别数据库中的时间函数的),客户端的时间格式不再影响转换过程。
不过数据库中存储时间的类型如果为字符型也会带来一些麻烦:
数据库中的时间仅仅是用来显示、查找的,那么影响还不算大,但如果对时间字段进行一些算法如计算星期、DateDiff、DateAdd等,那就麻烦了,尤其实在大型数据查询中转换类型是会影响效率的
总结
数据库中存储日期的字段类型到底应该用varchar还是datetime ?这两种方法各有优势,datetime可以借用sql函数库中运算函数,增加了时间在各种运算上的效率;而varchar类型则可以在字符编码上显出优势。在 存储的时间将来不需要进行大量计算 的前提下,可以考虑选择varchar类型,反之,选择datetime类型。