在 SQL/VB/Asp.Net 中更新日期

Posted

技术标签:

【中文标题】在 SQL/VB/Asp.Net 中更新日期【英文标题】:Updating date in SQL/VB/Asp.Net 【发布时间】:2015-10-23 13:45:21 【问题描述】:

在这方面我几乎是个新手。我知道一点。只是试图将日期存储在 SQL 数据库中。我在下面的代码中暂时将其设置为06/06/2015,以查看是否可以对其进行更新,但它会将其更新为01/01/0001。当我怀疑它时,我真正想要存储的值是今天的日期加上 6 个月。 EG:如果它今天是31/07/2015,我希望它存储31/01/2016。任何人都可以帮忙吗?非常感谢...

ASPX.VB

Protected Sub imgBtnDatechange_Click(sender As Object, e As ImageClickEventArgs) Handles imgBtn.Click
Dim acc As New accounts(Membership.GetUser().ProviderUserKey)
Dim adjustedDate as Date = "06/06/2015"
acc.UpdateVipEndDate(acc.accountID, acc.adjustedDate)
End Sub

ACCOUNTS.VB

Public Property adjustedDate As Date

Public Sub UpdateVipEndDate(ByVal accountID As Guid, ByVal adjustedDate As Date)
    Dim DBConnect As New DBConn
    Using db As DbConnection = DBConnect.Conn("DBConnectionString")
        Dim cmd As SqlCommand = DBConnect.Command(db, "UpdateVipEndDate")
        cmd.Parameters.Add(New SqlParameter("accountID", SqlDbType.UniqueIdentifier,       ParameterDirection.Input)).Value = accountID
        cmd.Parameters.Add(New SqlParameter("newadjustedDate", SqlDbType.Date,     ParameterDirection.Input)).Value = adjustedDate
        db.Open()
        cmd.ExecuteNonQuery()
        cmd.Dispose()
        cmd = Nothing
        db.Dispose()
        db.Close()
    End Using
End Sub

存储过程

CREATE PROCEDURE [UpdateVipEndDate]
@accountID          uniqueidentifier,
@newadjustedDate    date
AS
BEGIN

UPDATE tblAccounts SET [vipEndDate] = @newadjustedDate WHERE [accountID] = @accountID

END

【问题讨论】:

【参考方案1】:

您在这里设置了日期:

Dim adjustedDate as Date = "06/06/2015"

但你永远不会在任何地方使用那个变量。相反,您在 acc 对象上使用了一个参数:

acc.UpdateVipEndDate(acc.accountID, acc.adjustedDate)

因此,acc.adjustedDate 值可能为空或一些默认的MinDate 值。

您似乎在这里混淆了一些事情......

    如果某物是Date,则将其用作Date。不是String。 如果UpdateVipEndDate 方法是on acc 对象,为什么需要将它的引用传递给它自己的参数?它应该能够在方法内部访问这些值。

不过,我可能在这里下车了。似乎最简单的事情是不使用局部变量,而使用您在其他地方使用的对象成员:

acc.adjustedDate = "06/06/2015"

【讨论】:

感谢大卫的回复...哦,我现在有点迷路了。一旦我看到解决方案,我就会确切地知道发生了什么,但我只学了一两天。我知道存储过程有效,这是我无法理解的 VB 代码。如果您或任何人可以为我调整它,我会更清楚。我给你烤个蛋糕.. 我很擅长 ;-) @Eggybread:我不确定您还在寻找什么。你试过我的建议了吗?不要创建一个新的局部变量来保存日期(您的代码正在做什么),而是在您实际传递给方法的对象变量上设置日期。 对不起,第一次没有关注你,但我现在明白你在说什么了。刚刚试了一下,现在说 BC30311:“布尔”类型的值无法转换为“日期”。 啊.. 使用 ToString 并且它有效。非常感谢大卫。

以上是关于在 SQL/VB/Asp.Net 中更新日期的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC 视图需要将选定的下拉列表和日历日期传递给模型

更新页面的一部分以显示“新闻”(不使用数据库)Asp.net C#

以不同语言显示引导日期选择器日期,然后在 asp.net razor 视图中以英文提交日期

使用引导日期选择器在 ASP.net 核心中发布本地化的日期格式

如何在 ASP.NET 中获取客户端日期和时间?

如何通过 C# ASP.net 从 SQL Server 中的文本框中存储日期