如何更改 SQL 中的值
Posted
技术标签:
【中文标题】如何更改 SQL 中的值【英文标题】:How to change value in the SQL 【发布时间】:2017-02-08 13:02:37 【问题描述】:我在 SQL-Server2008 中使用存储过程。 C#中实现的代码如下:
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;
我的数据库中的日期时间格式基于日期、小时、分钟、秒和毫秒。 列也显示毫秒。 如果我想显示毫秒,我应该如何修改代码?
编辑:
我的存储过程:
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
【问题讨论】:
您是否尝试过手动运行sp_point
程序?它返回毫秒吗?如果是,请查看 datagridview 中显示该日期的列的 DefaultCellStyle.Format
属性 - 可能毫秒从列掩码中排除。
您可以在从存储过程转换为 varchar 后返回该列。
注意“sp_”前缀:***.com/questions/20530211/…
我在 datagridview 中看不到 DefaultCellStyle.Format 的毫秒数
【参考方案1】:
您应该更改数据在视图层中的显示方式,而不是数据(SQL 过程)或服务层 (da.Fill(dt);
)。
您可以自定义日期时间信息在网格视图列中的显示方式,如here 所示:
// keep all date/time info until seconds, included
gridView.Columns[dateColIndex].DefaultCellStyle.Format = "MM/dd/yyyy HH:mm:ss";
【讨论】:
谢谢,它的工作和毫秒MM/dd/yyyy HH:mm:ss:ff
【参考方案2】:
尝试将datetime
列转换为varchar
格式。
【讨论】:
以上是关于如何更改 SQL 中的值的主要内容,如果未能解决你的问题,请参考以下文章