vb.net中的日期时间格式

时间:2012-06-27 08:09:43

标签: sql-server-2005 vb.net-2010

我正在使用以下查询从使用VB.NET 4.0的SQL Server 2005获取数据

strSQL = "SELECT EmpNo,
                 Sum(Cast(Substring(OTHours, 0, 3)AS FLOAT)) AS Hour,
                 Sum(Cast(Substring(OtHours, 4, 5)AS FLOAT)) AS Minutes
          FROM   TMSTrans
          WHERE  CONVERT(VARCHAR, datein, 103) >= '01/06/2012'
                 AND CONVERT(VARCHAR, datein, 103) <= '27/06/2012'
          GROUP  BY EmpNo"

但是返回了错误的数据 - 我认为这是一个日期范围问题。在表格中,我有一个日期时间字段,其中存在数据01/04/2012 00:00:00。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

我建议您使用year month day作为查询中的日期格式。美国使用Month Day Year作为日期格式,因此如果您在查询中使用01/06/2012,系统可能会识别6 Jan 2012。因此,您的查询实际上是在6 January27 June之间获取日期范围。

试试这个:

strSQL = "SELECT EmpNo,
             Sum(Cast(Substring(OTHours, 0, 3)AS FLOAT)) AS Hour,
             Sum(Cast(Substring(OtHours, 4, 5)AS FLOAT)) AS Minutes
      FROM   TMSTrans
      WHERE  CONVERT(VARCHAR, datein, 112) >= '20120601'
             AND CONVERT(VARCHAR, datein, 112) <= '20120627'
      GROUP  BY EmpNo"