我不知道如何将nvarchar值转换为int,但这就是它需要设置的方式。我找到了关于此的其他帖子,但我不知道如何在我拥有的INSERT语句中使用CAST。我能找到的所有帖子都是关于在SELECT语句中转换为int的。我需要这个语句来将字段@Duration更改为数据库中的int。 @Duration是一段时间。 (01:00,02:00 ......)他们都将四舍五入到下一个int值。因此,如果用户输入0:45,则应将其转换为1.有人可以帮我弄清楚如何让这个INSERT工作吗?
'SQL Insert: Product table
Dim sqlInsertProduct As String = "INSERT INTO Product (ProductName, Status,
CreateDate, ModifyDate, CreateUser,
ModifyUser, Price, LaunchDate, Duration,
IsPublic, Presenter, Host, Broker)
VALUES (@ProductName, '1',getdate(),
getdate(), @CreateUser, @ModifyUser,
'0', @LaunchDate, @Duration, '1',
@Presenter, @Host, @Broker);
SELECT SCOPE_IDENTITY();"
Using cmd As New SqlCommand(sqlInsertProduct, cn)
Dim ProductID As String
cmd.Parameters.Add(New SqlParameter("@ProductName",
txtNewWebinarName.Text))
cmd.Parameters.Add(New SqlParameter("@CreateUser",
System.Web.HttpContext.Current.User.Identity.Name))
cmd.Parameters.Add(New SqlParameter("@ModifyUser",
System.Web.HttpContext.Current.User.Identity.Name))
cmd.Parameters.Add(New SqlParameter("@LaunchDate", txtDateTime.Text))
cmd.Parameters.Add(New SqlParameter("@Duration", txtDuration.Text))
cmd.Parameters.Add(New SqlParameter("@Presenter", txtPresenter.Text))
cmd.Parameters.Add(New SqlParameter("@Host", txtHost.Text))
cmd.Parameters.Add(New SqlParameter("@Broker", txtBroker.Text))
cn.Open()
ProductID = cmd.ExecuteScalar()
Session("ProductID") = ProductID
Dim Product As String = Session("ProductID")
End Using
cn.Close()
答案 0 :(得分:0)
假设您要将TimeSpan
转换为int,同时假设您需要TotalHours属性:
Dim ts As TimeSpan = TimeSpan.Parse(txtDuration.Text)
cmd.Parameters.Add(New SqlParameter("@Duration", ts.TotalHours))
编辑:如果这实际上是TimeSpan,您的转换将是错误的,因为字符串“0:45”表示TimeSpan为0.75小时(45分钟为3/4小时)
这应该正确地进行舍入:
Dim hours As Integer = _
CInt(Math.Round(ts.TotalHours, MidpointRounding.AwayFromZero))