OriginalGriff
Когда я попробую это сделать:
DateTime serverDate = DateTime.Now;
string currentDateString = string.Format("{0}", serverDate.ToString("yyyyMMddHHmmssffffff"));
Console.WriteLine(currentDateString);
Я получаю то, что ожидаю:
20170527091049145901
yyyyMMddHHmmssffffff
Поэтому я бы предположил, что значение" serverDate", которое вы извлекаете (откуда, я не знаю), не имеет компонента ниже второго.
Используйте отладчик, чтобы посмотреть, что именно он содержит, и если свойство Millisecond равно 0, то именно поэтому оно печатается как "000000", когда вы ожидаете значение.
Затем вы можете посмотреть на источник DateTime, чтобы узнать, почему.
"как я могу получить микросекунды текущего времени даты с помощью T-sql ?"
Точно так же вы получаете любую другую информацию: просто считываете ее в переменную DateTime:
try
{
using (SqlConnection con = new SqlConnection(strConnect))
{
con.Open();
using (SqlCommand cmd = new SqlCommand("SELECT TOP 5 InsertDate, GETDATE() FROM Videos", con))
{
DataTable dt = new DataTable();
using (SqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
DateTime dt1, dt2;
dt1 = (DateTime)reader[0];
dt2 = (DateTime)reader[1];
string dt1s = string.Format("{0}", dt1.ToString("yyyyMMddHHmmssffffff"));
string dt2s = string.Format("{0}", dt2.ToString("yyyyMMddHHmmssffffff"));
Console.WriteLine("{0}:{1}", dt1s, dt2s);
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Когда я запускаю это, я получаю:
20120624125436677000:20170527113211523000
20120527083918187000:20170527113211523000
20120527084000500000:20170527113211523000
20160603074757507000:20170527113211523000
20141012123141300000:20170527113211523000
Что указывает на то, что тики SQL Server относятся к миллисекунде