格式小时从1到24而不是0到23

时间:2014-09-09 07:42:58

标签: sql asp.net .net vb.net time-format

我正在使用 Now.Hour 为查询返回一个整数。这是我的SQL查询:

 SELECT * FROM DATABASE.dbo.STORE_LIVE WHERE DELIVERY_HOUR=Now.Hour

然而,在午夜12点,我的查询没有返回任何行,因为Now.Hour只返回'0',但数据库中的DELIVERY_HOUR的范围是1到24.

在MSDN时间格式中,这些是唯一可用的格式:

“H”

  • 小时,使用从0到23的24小时制。
  • 6/15/2009 1:45:30 AM - > 1
  • 6/15/2009 1:45:30 PM - > 13

“HH”

  • 小时,使用00至23的24小时制。
  • 6/15/2009 1:45:30 AM - > 01
  • 6/15/2009 1:45:30 PM - > 13

我应该如何定制Now.Hour从1到24返回而不诉诸0或23区间的条件语句?

由于

1 个答案:

答案 0 :(得分:0)

我建议你创建一个返回1 - 24而不是0 - 23的扩展方法。

将此代码放入模块

Imports System.Runtime.CompilerServices

<Extension()>
Private Function GetCustomHour(aDate As Date) As Integer
    Dim hour = aDate.Hour
    Select Case hour
        Case 0 : Return 24
        Case Else : Return hour
    End Select
End Function

然后在你的代码中:

而不是Now.Hour使用Now.GetCustomHour


但是,我强烈建议您更改数据库以存储有效时间,因为这只会导致更多问题(一天中没有这样的小时为24)