CRM 2013 Entity.GetAttributeValue<T> datetime to string - dynamics-crm

When adding an date record to crm 2013, its removing 2 hours from my record.
Which is an expected behavoir of the crm as a timezones correction.
The next expected behavior, retreiving the entity using the organisationService RetrieveMultiple api call, returns me the same record without the extra 2 hours.
Now the strange magic begins, when using the Entity.GetAttributeValue(fieldname) it should give me the datetime with the extra 2 hours as it is a setting from the crm. But this is what i get:
Create record: '01/10/2014'
CRM stores: '30/09/2014 22:00:00'
Retreive entity results to: '30/09/2014 22:00:00'
Use Entity.GetAttributeValue<DateTime>(fieldname) results to: '30/09/2014 00:00:00'
Why does it not say 01/10/2014 after using that method ?

GetAttributeValue is just an helper, if the DateTime field value inside CRM is null, GetAttributeValue returns DateTime.MinValue.
You need always to use .ToLocalTime() to get the local DateTime value instead of the UTC value.

Related

Query on Ali baba Cloud Billing API BOA

I was trying to get some data by using one of the api call QueryInstanceBill
The resulted JSON seems to be long and there is no date column to filter on how i got those many records.
Could someone here help me out
To be able to filter by date, The billing date only used when Granularity is DAILY,format: YYYY-MM-DD. Example 2020-07-29
You can also use the "BillingCycle" field in the request:
The billing cycle. Format: YYYY-MM. Example: 2020-07
Documentation:
https://www.alibabacloud.com/help/doc-detail/100400.htm
QueryInstanceBill API returns data for billing cycle which is usually for a month (YYYY-MM)
If you want data for a particular date then in request parameter provide the value for field "BillingDate" in format: YYYY-MM-DD
and the value for field "Granularity" should be "DAILY"
Check out the documentation:
https://www.alibabacloud.com/help/doc-detail/100400.htm
Also, you can use OpenAPI Explorer, I have provided BillingCycle as "2019-10", BillingDate as "2019-10-15" and Granularity as "DAILY":
https://api.aliyun.com/#/?product=BssOpenApi&version=2017-12-14&api=QueryInstanceBill&params={%22RegionId%22:%22cn-hangzhou%22,%22Granularity%22:%22DAILY%22,%22BillingCycle%22:%222019-10%22,%22BillingDate%22:%222019-10-15%22}&tab=DEMO&lang=JAVA

Can't remove hours and minutes from datatable

I'm trying to get release date field with y-m-d format.. Actually time format (for y-m-d) seems fine but also it gives h:m:s too, I changed time format at server side and removed h:m:s but datatable still shows them
What I get
2012-04-11 00:00:00
What I want
2012-04-11
Released_at field (Metronic theme - json datatable)
{
field: "released_at",
title: "Release Date",
type: "date",
format: "YYYY/MM/DD"
}
time format (I'm using laravel framework)
protected $dateFormat = "Y-m-d";
How do I fix this ?
Datatable accept column type same as mysql type.
You are trying to convert mysql dateTime column to Date in datatable, which is not possible from datatable.
In your code you have declared
format: "YYYY/MM/DD" // but actual type is dateTime as per mysql.So it will append time next to it.
If you are storing only date in mysql then you can change column type to Date, and your problem gets solved.
And if you want to convert string to date in laravel you can follow this post.
Your database column is of type dateTime which, by definition, includes both date and time information. If you want to remove the time at a database level then use the date type instead
$table->date("released_at")->nullable();
If instead of removing the time from the database, you just want to ignore it for certain parts of your application, you can leverage the fact than in Laravel all dates coming from your models are Carbon\Carbon instances, so you could do
$model->releasedAt->format('y-m-d'); // Returns '18-09-11'

400 - Bad Request while saving Date Only field in CRM using Web API

I am using Microsoft Dynamics 365 Web API approach to interacting with CRM data.
Here I want to update the field with type: DATE and TIME.
Date value I am passing in the request body is as below:
"packfirstday":"1-15-2018"
Except for above, I have also tried with DateTime and with different date formats.
e.g.
mm-dd-yyyy
m-dd-yyyy
mm/dd/yyyy
yyyy/mm/dd
yyyy-mm-dd
PS: I try to post without date field it is saving details successfully.
The problem is not with the code, the simple misunderstanding.
There are 2 components namely Behavior & Format. You have Format set as 'Date only' not the Behavior. Behavior decides the Database terms whereas Format is used for displaying datepicker controls in Form.
So when you set the field in web api with only date part - the CRM database expects time part also.
Either set behavior also as date only, so this will work:
"packfirstday":"2018-01-15" //YYYY-mm-dd format
Or change your code to pass time part also:
"packfirstday":"2018-01-15T11:10:00.000Z" //UTC offset
Since user local behavior still expects the time part.

A validation error occurred in dynamics-crm

In my code, I insert from one date field to another date field, then update my entity with the new data and debugging my code. I get this exception:
A validation error occurred. The value of on record of type is outside the valid range.
When I change the same field in CRM UI I get no error. Where should I look for? What is the problem?
Normally this error will look like:
A validation error occurred. The value of 'field_name' on record of type 'entity_name' is outside the valid range.
You have to make sure, if the field is optionset - then the value (ex.10000000) passed in code is within the available range of options in optionset customization (ex: 10000000, 10000001, 10000002)
You said date field, verify if the date fields between the entities are of same type (like date only, date time, timezone specific, etc). Also the retrieval from CRM using SDK will give you UTC whereas the date value assignments in code while create/update will be parsed to UTC.. check that too for possible date range like 31st November 2017.

The default value for the date field will be "01/01/0001 00:00:00" on my create view

I am facing the following problem in using date correctly in my asp.net mvc application:-
i have a patient Object that contains a DateOfBirth property with a data type of (date) at the sql server 2008 database.
But the problem on the Create view the DateOfBirth initial value will be “01/01/0001 00:00:00”, so how can i force the DateOfbirth field to be empty on the Create view.
BR
Either use a nullable DateTime type (DateTime?) or accept that you'll never have a patient with a date of birth (DoB) that year (unless Jesus is a patient?) and treat those values as if null/empty. In that second case you'd have to modify aggregate commands (averages min/max) to filter out all those with that specific value.
Since everyone should have a DoB, it should really be enforced at record creation time that a DoB is provided (none provided - no record created)... so how often will this even be an issue?

Resources