Dynamics CRM: Date and Time类型字段中各种不同behavior的区别
作者:互联网
在Dynamics CRM的字段类型Date and Time中有三种不同给的behavior: User Local, Date Only和Time-Zone Independent。
下面我们就来说一下他们之间的区别。我们通过在一个实体中分别创建几种不同的Behavior来比较他们的区别:
1. User Local -- Format为Date Only
2. User Local -- Format为Date and Time
3. Date Only(它的格式只有Date only一种)
4. Time-Zone Independent -- Format为Date Only
5. Time-Zone Independent -- Format为Date and Time
我们创建一条记录并将他们的值设置为如下:
保存后,我们去数据库看下他们他们在数据库的值是什么:
这里需要说明一下,我在CRM设置系统的时区设置是UTC + 8
通过比较我们能够发现他们的区别:
- User Local -- Format为Date Only
前端只会显示日期不会显示时间,但是会把这个值默认为UTC + 8的时区,时间为1/19/2021 00:00:00.000,但是在数据库中会存储为UTC + 0的时间,也就是需要减掉8个小时,所以是2021-01-18 16:00:00.000,也就是数据库截图中的第三列
- User Local -- Format为Date and Time
如果理解了上面的,就不难明白这个为什么在数据库中是2021-01-19 00:00:00.000,因为我们在前端界面设置的时间为1/19/2021 8:00 AM,系统默认为UTC + 8的时区,那么存储在数据库中的时间为UTC + 0,也就是减掉8个小时为2021-01-19 00:00:00.000,也就是数据库截图中的第四列
- Date Only(它的格式只有Date only一种)
这种Date Only和Time-Zone Independent都是不区分时区的,也就是和时区无关的,可以理解为在前端填的是什么,数据库中记录的就是什么,无论你是什么时区。因为这个是Date Only的,所以前端不会显示时间,那么数据库就会记为2021-01-19 00:00:00.000,也就是数据库截图中的第一列
- Time-Zone Independent -- Format为Date Only
同第三种一样,不区分时区,只显示日期,不显示时间,数据库记录为2021-01-19 00:00:00.000,也就是数据库截图中的第五列,通过尝试可以看出Behavior如果为Date Only和Time-Zone Independent的Date Only,那么它们在数据库的表现形式是一样的,并没有区别,在前端页面的显示也是相同的。
- Time-Zone Independent -- Format为Date and Time
同样与时区无关,我们前端设置为1/19/2021 8:00 AM,那么数据库中就记为2021-01-19 08:00:00.000,也就是数据库截图中的第二列
如果用户不是多个时区的,这一块的差别是可以忽略的,很少有人会去关注他们在数据库中存储的值是什么,但是如果你需要写SSRS报表,需要直接从数据库中取数据,那么数据库和前端的差别就非常关键了,你需要知道Date and Time字段它的Behavior是什么类型,然后在报表中来决定是否需要换算,这些正是我最近在开发报表中所遇到的,所以大家如果有和我一样的情况,也请注意!
另外还需要说一下这三种Behavior的一个区别就是,一旦建了一个Date and Time字段,behavior是Date Only或者Time-Zone Independent,那么这个字段在保存后,它的Behavior就不能更改了;
但如果behavior是User Local的,那么即使保存后,也是可以更改的。如下图:
- User Local
- Date Only
- Time-Zone Independent
标签:00,Zone,数据库,Only,behavior,Time,Date 来源: https://blog.csdn.net/hdjStone/article/details/120578308