Assume that I have a table like this:
CREATE TABLE `table1` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`date` date,
`timestamp2` timestamp(2),
`datetime3` datetime(3),
`time6` time(6),
PRIMARY KEY (`id`)
);
Here's the sample inserts:
insert into table1(`date`,`timestamp2`,datetime3,time6)
values('2000-01-01','2001-01-01 01:01:01.23',
'2002-01-01 01:01:01.243','01:01.234893');
insert into table1(`date`,`timestamp2`,datetime3,time6)
values(null,null,null,null);
and I get the data in C# like this:
using Devart.Data.MySql;
DataTable dt = new DataTable();
StringBuilder sb = new StringBuilder();
using (MySqlConnection conn = new MySqlConnection(ConnString))
{
using (MySqlCommand cmd = new MySqlCommand())
{
conn.Open();
cmd.Connection = conn;
cmd.CommandText = "select * from table1;";
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(dt);
conn.Close();
}
}
int row = 0;
foreach (DataRow dr in dt.Rows)
{
row++;
sb.AppendLine();
sb.AppendLine("Row " + row);
foreach (DataColumn dc in dt.Columns)
{
object ob = dr[dc.ColumnName];
string typeName = ob.GetType().ToString();
sb.AppendLine($"{dc.ColumnName} = {typeName} | value = " + ob + "");
}
}
richTextBox1.Text = sb.ToString();
and here's the output:
Row 1
id = System.Int64 | value = 1
date = System.DateTime | value = 01/01/2000 12:00:00 AM
timestamp2 = System.DateTime | value = 01/01/2001 1:01:01 AM
datetime3 = System.DateTime | value = 01/01/2002 1:01:01 AM
time6 = System.TimeSpan | value = 01:01:00.2348930
Row 2
id = System.Int64 | value = 2
date = System.DBNull | value =
timestamp2 = System.DBNull | value =
datetime3 = System.DBNull | value =
time6 = System.DBNull | value =
As you can see that the Devart Express dotConnect MySQL returns time fraction in DateTime
in C#. The time fraction is lost.
How to get the time fraction?
*Note: For some reason I must use Devart Express dotConnect.