Valued Jones (11/20/2013)
This question gave me a headache.. then I went to the reference page and it got worse. Looks like I need to read up on this so I can understand it better.
I got a headache too. In the end I ticked 3 random boxes so I could look at the answer and the explanation and the reference. That unfortunately didn't relieve my headache: for example the explanation says the default type of System::ContainerStartTime is datetime. Quite apart from the question "what does 'default type' mean?" it's notable that no datetime type is mentioned on the referenced page, so presumably SSIS casts don't allow it to be cast to anything: that tends to be confirmed by the Integration Services Data Types page where there is no datetime type, nor even a DT_DATETIME type. I don't know why it took me a while to realise that "datetime" wasn't meant to be the name of a type, but a descrition of a type - perhaps because SSIS has more than one type which is a datetime type, so it doesn't specify a definite "the default type". And the SSIS Casts page is full of nonsense anyway, for example the statement "(DT_WSTR,20) casts 20 byte pairs, or 20 Unicode characters, to the DT_WSTR data type" may sometimes be true but will usually be false since the typical thing cast to that target type will be some sort of number or date or time or timestamp that doesn't occupy 40 bytes, for example an 8 byte floating point number representing a date and a time - an object of type DT_DATE - and that sort of thing makes it hard for me to take the page seriously. The explanation can't be blamed for teh faults of that page, and that seems to be only page it makes sense to reference unless there is somewhere some documentation of what the string casts actually do with DT_DATE and DT_TIMESTAMP data, but the explanation makes up for that by explaining what is actually happening, although at one point the language is rather careless, saying that a particular cast adds fractional seconds, which I find quite amusing: claiming that a cast adds precision is almost excusable because precision can be considered an attribute of the type, but of course casts operate on values, not on types, so it isn't really excusable. But claiming that it adds fractional seconds is not even almost excusable. There is a fractional seconds field in the new value created by the cast, and if it put 2, or 37, or anything but 0 in there it would be adding some fractional seconds to teh old value to get teh new one, but it puts 0 in there so no fractional seconds are added.
I like the question, though. At least the answer is probably right, even if the page referenced contains some junk and the explanation contains some oddities, and it's made me think I should get around to looking at SSIS properly sometime as a preliminary to looking at some other esoteric services associated with SQL Server.