2017-02-08 31 views
1

私はSQL-Server2008でStored-Procedureを使用しています。次のように C#で実装されたコードは、次のとおりです。SQLの値を変更する方法

SqlConnection con = new SqlConnection("..."); 

DataTable dt = new DataTable(); 
SqlDataAdapter da = new SqlDataAdapter(); 
SqlCommand cmd = new SqlCommand("sp_point", con); 
da.SelectCommand = cmd; 
cmd.CommandType = CommandType.StoredProcedure; 
con.Open(); 
da.Fill(dt); 
dataGridView1.DataSource = dt; 

私のデータベースでDateTime型書式が日付、時間、分、秒、ミリ秒単位に基づいています。 列にはミリ秒も表示されます。 ミリ秒を表示する場合は、コードをどのように変更する必要がありますか?

編集:

私のストアド・プロシージャ:

USE [Diagnose] 
GO 
/****** Object: StoredProcedure [dbo].[sp_point] Script Date: 02/09/2017 14:04:02 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER proc [dbo].[sp_point] 

as 
SELECT  dbo.Station.StationName, dbo.SPointState.SPointStateName, dbo.Point.PointName, dbo.PointState.PointStateName, dbo.PositionPoint.PositionPointName, 
         dbo.RouteType.RouteTypeName, dbo.PartOfRoute.PartOfRoute AS PartOfRoute, dbo.PointPacket.PointPacketID AS PointPacketID, dbo.PointPacket.Operator AS Operator, 
         dbo.PointPacket.BlockedPoint AS BlockedPoint, dbo.PointPacket.WarningLable AS WarningLable, dbo.PointPacket.EmergencyLock AS EmergencyLock, 
         dbo.PointPacket.SendPointStateFromIO AS SendPointStateFromIO, dbo.PointPacket.SendPointPositionFromIO AS SendPointPositionFromIO, dbo.PointPacket.HealthSendFromIO AS HealthSendFromIO, 
         dbo.Date.Date AS Date_Time 
FROM   dbo.PointPacket INNER JOIN 
         dbo.SPointState ON dbo.PointPacket.SPointState = dbo.SPointState.SPointStateID INNER JOIN 
         dbo.Station ON dbo.PointPacket.StationCode = dbo.Station.StationID INNER JOIN 
         dbo.Date ON dbo.PointPacket.Date = dbo.Date.DateID INNER JOIN 
         dbo.Point ON dbo.PointPacket.PointCode = dbo.Point.PointID INNER JOIN 
         dbo.PointState ON dbo.PointPacket.PointState = dbo.PointState.PointStateID INNER JOIN 
         dbo.PositionPoint ON dbo.PointPacket.PositionPoint = dbo.PositionPoint.PositionPointID INNER JOIN 
         dbo.RouteType ON dbo.PointPacket.RouteType = dbo.RouteType.ID INNER JOIN 
         dbo.PartOfRoute ON dbo.PointPacket.PartOfRoute = dbo.PartOfRoute.ID 

select * from PointPacket 
+2

は、手動 'sp_point'プロシージャを実行しようとしたことがありますか?ミリ秒を返しますか?はいの場合 - 日付を示すdatagridviewのcolumnの 'DefaultCellStyle.Format'プロパティを見てください。おそらくミリ秒がカラムマスクから除外されます。 –

+0

ストアドプロシージャからvarcharに変換した後にその列を返すことができます。 –

+1

接頭辞 "sp_"に注意してください:http://stackoverflow.com/questions/20530211/avoid-naming-user-stored-procedures-sp-or-sp – Tanner

答えて

3

データが表示される方法(データ(SQLプロシージャ)またはサービス・レイヤー(da.Fill(dt);)ではなく)を変更する必要があります。

あなたはhere示されるように、日時情報がグリッドビューの列に表示される方法をカスタマイズすることができます

// keep all date/time info until seconds, included 
gridView.Columns[dateColIndex].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm:ss"; 
+0

ありがとう、それは働いてミリ秒のため 'MM/dd/yyyy HH:mm:ss:ff' – Safa

0

varcharフォーマットにそのdatetime列を変換するようにしてください。

関連する問題