C# 操作MongoDB时间 时差问题

C# 操作MongoDB时间 时差问题

 

SqlServer需要把一部分数据转移到MongoDB,提高系统查询效率,无奈时间问题困扰,循环插入大概两万条数据吧
AAA loanReport=new AAA();
loanReport.DailyDate =DateTime.SpecifyKind(dt,DateTimeKind.Utc);
进去后数据库时间还是相差8个钟,ok,另一种方法
       [BsonDateTimeOptions(Kind = DateTimeKind.Local)]
        public DateTime CreateDate { get; set; }
        2018-12-16 16:00:00.000Z
好,是这样子的,还是一样,MongoDB驱动没做好是无疑了,但是有没解决的方案呢,求大神!!!

 

以专业开发人员为伍

Bbs12

Blank Blank Blank Blank

utc时间跟北京时间本来就差8个小时,这不是基本的嘛!

每一个电脑、每一个服务器,都有可能默认设置为不同时区。例如同样是在北京,保不齐某个大公司里正在开会的某一个人是从韩国来的、他的笔记本设置的是首尔时间,而另外一个人是美国东部时间,还有一个人的电脑设置的是美国西部时间。对于服务器也是如此,一些大网站在全世界各地都可能分别有接入服务器。所以胡乱用什么 DateTimeKind.Local 或者 .Utc 都是不对的,设计者要有起码的规范。

在你的代码中,用了 utc 时间,这可以体现一种规范。然后又用了 local 时间,这算是什么?

0 2018-12-17 12:39:13

只看TA 引用 举报 #2    得分 100

【MongoDB】深入了解MongoDB不可不知的十点一、对象ID的生成 每个mongoDB文档那个都要求有一个主键,它在每个集合中对所有的文档必须是唯一的,主键存放在文档_id字段中。由12个字符组成; 4c291856 238d3b 19b2 000001 4字节时间戳 机器ID 进程ID 计数器3333 二、BSON BSON是mongodb中用来标示文档的二进制格式,它既是存储格式,也是命令格式。所有文档都以bson存储在磁盘上,所...

以专业开发人员为伍

Bbs12

Blank Blank Blank Blank

“2018-12-16 16:00:00.000Z”这种字符串表达形式,清楚地说明了 utc 时间是多少。至于说不同时区的所谓 local 时间,那么是应用程序(而不是什么数据库存储)来转换的,你既然在内存中的对象属性要用 local time 那么自然就差8个小时(假设你使用北京时间)。所以你贴出的数据库表示是很正常的,这体现出“MongoDB驱动”也很正常,有什么问题?

0 2018-12-17 12:43:49

只看TA 引用 举报 #3    得分 0

三、MongoDB练习//1.进入my_test数据库 use my_test //2.向数据库的user集合中插入一个文档 db.users.insert({ username:"sunwukong" }); //3.查询user集合中的文档 db.users.find(); //4.向数据库的user集合中插入一个文档 db.users.insert({ username:"zhub...

以专业开发人员为伍

Bbs12

Blank Blank Blank Blank

sql server 保存时间时,没有时区概念,这其实是 sql server 的一个技术债,而且可能解决不了。而 MongoDB 则天生有时区概念。现在在于程序员有没有时区概念?!

当你从 sql server 读取数据,假设你数据库中的日期时间客户确定是北京时间时,那么你将数据转存到 MongoDB 时,就应该将北京时间变为格林威治时间。因为 MongoDB 显然更国际化,更适合大系统的概念。

0 2018-12-17 12:49:16

只看TA 引用 举报 #4    得分 0

MongoDB的C语言编程实例下面讲述在Linux平台下MongoDB的C语言编程实例 假设已经安装好了MongoDB。 1. 下载MongoDB的C语言驱动并安装 这里下载的MongoDB的C语言驱动是 mongo-c-driver-1.3.5.tar.gz,解压后打开mongo-c-driver-1.3.5目录下的README文件,按其中描述了安装方法安装,如下:   # tar xzf mongo-c-d

xuzuning

Bbs9 版主

Blank Blank Blank Blank

Sql Server 没有时区的概念,是因为 windows 有,没有必要在搞一套
MySql 有时区概念,你可以修改配置文件,或令其从操作系统获取
MongoDB 没有时区概念,那是因为他认为全世界都是日不落帝国的子民

出现静脉曲张要怎么办?营养师建议:你可以做这几件事广告 济民中医院 · 顶新

0 2018-12-17 13:13:29

只看TA 引用 举报 #5    得分 50

xian_wwq

Bbs7

建议统一使用UTC时间,这样就不用纠结于各种转换了

0 2018-12-17 14:32:08

只看TA 引用 举报 #6    得分 50

解决mongodb group按时间分组的时差问题最近在做数据的访问量统计,时间格式是Date类型,发现用group按时间分组后访问量数据不对,原来是因为Mongodb中的Date与我们有8小时时差。解决办法如下:  按小时分组查询时语句如下:     $group: { _id:{hour:{$hour:'$timexxx'}} }  由于有8小时时差,所以查询时加上8小时,改为如下:     $group: { _id:{ho

  •  
posted @ 2019-06-22 21:49  grj001  阅读(727)  评论(0编辑  收藏  举报