CDate
次のコードで、関数の動作がおかしいことがわかりました。
private void button1_Click(object sender, EventArgs e)
{
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" + Application.StartupPath + @"\db.mdb" + ";Persist Security Info=False");
{
OleDbDataAdapter adapterA = new OleDbDataAdapter("SELECT CDate(#01/05/2013#) AS TheDate", connection);
DataTable dataTableA = new DataTable();
adapterA.Fill(dataTableA);
DateTime dateTimeA = (DateTime)dataTableA.Rows[0]["TheDate"]; // get 1
MessageBox.Show(dateTimeA.Month.ToString());
} //these to ensure that I did not use the variables in the next block /^-^\ .
{
OleDbDataAdapter adapterB = new OleDbDataAdapter("SELECT CDate(#13/05/2013#) AS TheDate", connection);
DataTable dataTableB = new DataTable();
adapterB.Fill(dataTableB);
DateTime dateTimeB = (DateTime)dataTableB.Rows[0]["TheDate"]; // get 5
MessageBox.Show(dateTimeB.Month.ToString());
}
}
値が 12 より大きい場合、CDate
関数はそれを日付の「日」の部分と見なし、他の部分は日付の「月」の部分と見なすことを理解しています。
ソースコードは (リンク)からダウンロードできます。
そのためのルールは何ですか?
Microsoft が MSDN でこれを説明しなかったのはなぜですか?