Problem
Unable to map a Date Time field crawled from a BDC source to a managed property.
Scenario:
Using BDC to map ther Adventure Works database.
1) Defining the fields from the HumanResources.Employee table
2) Crawling the content results in new crawled properties existing in search (specifically looking at HireDate)
3) HireDate mapped as below
<
TypeDescriptor TypeName="System.DateTime" Name="HireDate" />This gives the details:
Property Name: AdventureWorksInstance.HumanResources.Employee.HireDate
Category: Business Data
Property Set ID: 2edeba9a-0fa8-4020-8a8b-30c3cdf34ccd
Variant Type: 7
Data Type: Date and Time
Multi-valued: No
Category: Business Data
Property Set ID: 2edeba9a-0fa8-4020-8a8b-30c3cdf34ccd
Variant Type: 7
Data Type: Date and Time
Multi-valued: No
4) When trying to map this Date Time field to a Managed Property (Date Time) the crawled dates are not listed.
The problem appears to be related to the Variant Type: 7 as on other properties (i.e. __BdcLastModifiedTimestamp) this gives a Variant Type: 64 and these values can be mapped successfully.
Does anyone know how to get the crawled property to have Variant Type: 64 or alternative solution to enable date time fields to be promoted to managed properties from within BDC data sources.

Unable to map a Crawled DateTime field to a Managed DateTime field
Hemant Kumar
Update:
I have had feedback from Microsoft on this and it is a known issue. It appears that it currently only works with vt_filetime values (hence the __BdcLastModifiedTimestamp working) and not with vt_date.
The workaround suggested is to use string values for dates (not ideal). This will involve defining the datetime fields as strings in the BDC defintion and the metadata fields as string fields.
I will work through this and post details of the steps required.
espeir
I have had confirmation that this problem is expected to be fixed in SP1 (no dates for this) it was also indicated that there would be improve support for primitive types.
Workaround:
In the Application Mapping file you need to change the required line as below
<TypeDescriptor TypeName="System.DateTime" Name="HireDate" />
to
<TypeDescriptor TypeName="System.String" Name="HireDate" />
The SQL select statement does not need to be changed, this will populate the field with the full date time string i.e. 3/30/2006 12:00:00 AM
Change the Metadata fields so that they are Text type and not DateTime.
Recrawl you data (to update the crawled properties)
You will now be able to map these crawled fields correcty.