比较日期 - 日期格式问题

问题描述:

在我的web表单中,我试图找出不包括周末和假日的休息天数。我有一个SQL数据库,假日日期是日期格式(yyyy-MM-dd)。用户使用MM/dd/yyyy格式添加日期。不计算我的代码周末部分作品。确定一个日期是否是假期,如果是,不算它是行不通的。这是我的代码。我已经尝试了所有已经注明的内容。我感谢任何帮助,找出如何比较输入的日期和SQL日期。比较日期 - 日期格式问题

Dim intCount As Integer 
Dim temp As Integer 

'Set same day as 1 <-- your preference. Though you can't work out averages if they are 0. 
'Im not checking if this day is a holiday (though in theory you shouldn't have to!). 
If StartDate = EndDate Then 
    WorkingDays = 1 'Change me to your needs. 
    Exit Function 
End If 

intCount = 0 ' Now we start counting days. 'If you always want to count the first day, set this to 1. 

Do Until StartDate = EndDate 

    'First, we find out if this day is a weekday or a weekend. 
    'If weekday, 1 gets added to the number of days. 
    Select Case Weekday(StartDate) 
     Case Is = 1, 7 
      intCount = intCount 'Weekend, so nothing added. 
     Case Else 
      intCount = intCount + 1 
    End Select 

    'Now, if this day was a holiday, we take it back off again! 
    'Dim vsqldate = DateTime.ParseExact(StartDate, "yyyy-MM-dd", Nothing) 
    'Dim vsqldate = StartDate.ToString("yyyy-MM-dd") 
    'Dim vsqldate = fromDt.ToString("yyyy-MM-dd") 
    Dim vsqldate = CDate(Format(StartDate, "yyyy-MM-dd")) 

    Dim strWhere = "Holiday= #" & vsqldate & "#" 'change fieldname. 

    If (DCount("Holiday", "tblCodesholidays", strWhere) > 0) Then 'Change to your field/table names. 
     intCount = intCount - 1 
    End If 

    StartDate = StartDate.AddDays(1) 'We move to the next day. 

Loop 

WorkingDays = intCount 

从SQL Server的角度来看,'yyyymmdd'格式的日期被认为是语言中立的。所以,试试这个在您的VB.Net代码:

Dim vsqldate As DateTime 
vsqldate = DateTime.ParseExact(StartDate.ToString("MM/dd/yyyy")) 
Dim strWhere = "Holiday= '" & vsqldate.ToString("yyyyMMdd") & "'" 'change fieldname. 
+0

如何定义vsqldate?我以上尝试的方式都不起作用。谢谢! – user3033348

+0

也许我误解了你的问题。 vsqldate是最终用户在表单上输入的日期吗? – DMason

+0

StartDate是表单上字段的名称。我为StartDate定义了一个变量,以便我可以将它与SQL表tblCodesholidays中的日期字段Holiday进行比较。如果StartDate = Holiday(表格中的日期),那么我不想把它算在内。仅供参考 - 我确实尝试像StartDate一样定义vsqldate,但这并不奏效。谢谢你帮助我! – user3033348