【问题标题】:Save date in SQL Server without minutes and hours在 SQL Server 中保存日期,无需分钟和小时
【发布时间】:2016-04-28 01:32:47
【问题描述】:

我正在尝试将 datetimepicker 中的日期保存到 SQL Server 数据库作为用户停用的持续时间,但我只想保存日期月份和年份。 到目前为止,这是我的功能:

Public Sub DeactivateUser(user As String, duration As Date)
    Dim query As String
    Dim startdate As Date = Date.Parse(Date.Now)
    query = "Update SC_User Set Us_duration='" & duration & "','" & "Us_Start='" & startdate & "Where Us_User='" & user & "'"
    Access.ExecuteQuery(query)
    query = "Update SC_User Set Us_Inactive" & 1 & "Where Us_User='" & user & "'"
    Access.ExecuteQuery(query)
    MessageBox.Show("User deactivated")
End Sub

这不起作用,但显示了我的想法。

【问题讨论】:

  • 据我所知,SQL Server 不支持部分日期。
  • 您想要一个持续时间还是一个日期?这是两个不同的东西。
  • 这是一个荒谬的声明:Dim startdate As Date = Date.Parse(Date.Now)。为什么要将Date 解析为Date?解析的重点是从String 创建一个Date
  • 我正在考虑将“持续时间”变量与也存储的“Stardate”变量进行比较。还有其他方法吗? (我是新手)
  • 如果您需要开始日期和结束日期,则存储这些值。如果您需要的是以天为单位的持续时间,那么您可以存储该数字。也就是说,您必须知道开始日期和结束日期才能计算该数字,因此如果需要在结束前一段时间记住开始日期,则可能需要存储开始日期。

标签: sql-server vb.net winforms


【解决方案1】:

如果您想要今天的日期而不需要当前时间,则使用Date.Today。如果您希望日期没有来自任意 DateTime 值的时间,那么您可以使用其 Date 属性,例如

myDate = myDateTime.Date

请注意,Date 属性仍返回 DateTime,但其时间部分归零。毫不奇怪,Date.Today 属性是这样实现的:

Return Date.Now.Date

如果您只想在 SQL Server 中存储没有时间的日期,那么您应该使用不存储时间的 date 数据类型。

【讨论】:

    【解决方案2】:

    您可以通过使用日期字符串来选择您想要的任何格式:

    Dim startdate As String = Now().ToString("MM-dd-yyyy")
    query = "Update SC_User Set Us_duration='" & duration & "','" & "Us_Start='" & startdate & "Where Us_User='" & user & "'"
    Access.ExecuteQuery(query)
    

    当然,这会给你的时间只有几个月、几天和几年。

    【讨论】:

      【解决方案3】:

      datetimepicker 可以返回基准日期

      dtPicker.Value.Date
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-29
        • 2014-08-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多