【问题标题】:VB.NET date formatVB.NET 日期格式
【发布时间】:2015-05-23 19:40:29
【问题描述】:

如何将 2014-12-27 替换为报表中的当前日期

Dim cmd As New SqlCommand("Select * from LateComersReport where PDate = '2014-12-27'", conn)

或者我怎样才能在声明中以'yyyy-mm-dd'格式显示日期

Dim Tday As Date = Date.Today

【问题讨论】:

    标签: vb.net date format


    【解决方案1】:

    您可以简单地将您的 SQL 查询更改为:

    "Select * from LateComersReport where PDate = CONVERT(DATE, GETDATE())"
    

    我想指出几点:日期变量,无论是在 SQL 中还是在 .NET 中,都没有 格式。格式化仅在您谈论显示日期时有用/相关,即作为报告或 UI 中的字符串。当您的代码中使用日期值时,您不应该关心日期是如何显示的。

    此外,作为一种习惯,您应该在适用的情况下在 SQL 语句中使用参数,而不是将字符串连接在一起。例如,如果您要在查询中插入自己的日期值,而不是使用 SQL 的内置 GETDATE() 函数,您可以这样做:

    Dim cmd As New SqlCommand("Select * from LateComersReport where PDate = @MyDateValue", conn)
    Dim param As New SqlParameter("@MyDateValue", Now)
    cmd.Parameters.Add(param)
    

    这样做的原因是由于存在 SQL 注入攻击的风险,构建 SQL 的字符串连接本质上是不安全的。

    【讨论】:

    • 非常感谢Roryap...它工作得很好。我搞砸了中间的日期,并且 Smtp 出现了问题,并认为这与我们编辑的代码有关。
    【解决方案2】:

    首先,日期没有格式,它只有一个值。日期字符串可以有格式。

    其次,如果您构建 sql 查询,请始终使用 sql 参数而不是字符串连接。这可以防止 sql 注入或转换/定位问题。并且总是传递正确的类型(日期是这种情况),而不是让数据库解释你的论点。

    Using cmd As New SqlCommand("Select * from LateComersReport where PDate = @PDate", conn)
        cmd.Parameters.Add("@PDate" , SqlDbType.Date).Value = Date.Today ' or SqlDbType.DateTime '
        ' .. '
    End Using
    

    【讨论】:

    • @rajan:如果它解决了您的问题,请接受它。不客气。
    猜你喜欢
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多