2015-03-24 3 views
0

Я бегу запрос, как это:ВЫБРАТЬ указать формат DATETIME

SELECT dt, x, y 
FROM mytable 
WHERE dt BETWEEN '2015-25-05 00:00:00.000' AND '2015-25-05 12:00:00.000'; 

dt является DateTime и вставить в формате 'YYYY-MM-дд чч: мм: ss.fff'. Мой выходной dt-формат - только «yyyy-dd-MM hh: mm: ss».

Мне также нужны миллисекунды на моем выходе. Пожалуйста, кто-нибудь скажет мне, как я их получу? Я сожалею, что я не мог найти этот синтаксис сам ...

EDIT:

Я думал, что проблема была легче, чем это. Я попытался использовать

SELECT CONVERT(DATETIME, dt,109) 

и он хорошо работает в MSSQL-Management-Studio.

Но я хочу использовать dt-значение в C# в Visual Studio 2013. Я запускаю запрос и записываю вывод в файл.

Я использую System.Data.SqlClient.SqlConnection, System.Data.SqlClient.SqlCommand и System.Data.SqlClient.DataReader, чтобы получить значения, как это:

SqlConnection conn = new SqlConnection(connectionString); 
SqlCommand command = new SqlCommand(query, conn); 
SqlDataReader reader = command.ExecuteReader(); 

while (reader.Read()) 
{ 
    //write one line; column is the number of columns 
    for (int n = 0; n < column; n++) 
    { 
     writer.Write(reader[n].ToString()); 
    } 
    writer.WriteLine(""); 
} 

Я изменил запрос в этой программе и использовал CONVERT-функцию, но я до сих пор не получаю миллисекунды ... Я думаю, что это скорее проблема C#/Visual Studio.

РЕШЕНИЕ:

Я добавил это писать DateTime:

if(n==0) 
    writer.Write(reader.GetDateTime(0).ToString("yyyy-MM-ddThh:mm:ss,fff")); 

Спасибо

+0

новообращенный (NVARCHAR, дт, 121) – mohan111

+0

[Ссылка] (http://stackoverflow.com/questions/715432/why-is-sql-server-losing-a-millis econd) это будет полезно. – MeshBoy

+0

121 будет yyyy-mm-dd ... и он хочет yyyy-dd-mm. Я не думаю, что вы можете это сделать без разбора строки и ее создания. Реальный вопрос: где используется этот тип данных? Если в каком-то коде или отчете необходимо форматировать – Juan

ответ

0

Это даст вам время в миллисекундах

SELECT CONVERT(DATETIME, dt,109) AS dt,x,y 
FROM mytable 
WHERE dt BETWEEN '2015-25-05 00:00:00.000' AND '2015-25-05 12:00:00.000'; 
+0

Спасибо! Я думал, что это будет мой ответ, но проблема мне не понятна ... Я добавил решение на свой пост. – Friedrich

Смежные вопросы