SQL 编辑器和 C# 中的 DateTime2 比较

DateTime2 Comparisons in SQL Editor and C#

我在比较 SQL 数据库中的日期时间时遇到了实际问题。在 SQL Server Manager 2014 中,我将 运行 如下所示:

SELECT 
  *
FROM 
  EmulationSessions
where StaffUser = 'person'
AND Active = 1
AND Created < '2017-02-05 15:38:13'

我希望看到的行如下所示:

但是我没有得到任何结果。

当我像下面这样转换当前时间时,在 C# 中匹配数据库格式的类似尝试也失败了:

System.DateTime currentTime = System.DateTime.Now;
string currentTimeString = System.DateTime
                                    .Parse(currentTime.ToString(), new CultureInfo("en-AU"))
                                    .ToString("yyyy-MM-dd hh24:mm:ss");

我还缺少其他转换步骤吗?

在您的查询中,日期被视为字符串,在进行此类比较时,您必须始终使用日期时间数据类型。试试这个

    SELECT 
  *
FROM 
  EmulationSessions
where StaffUser = 'person'
AND Active = 1
AND Created < Convert(datetime,'2017-02-05 15:38:13',112)

您也可以使用 CAST 来达到同样的效果。

SQL 服务器默认格式为 'YYYY-MM-DD',在您的情况下,'02' 被视为月份。 像这样检查,

SELECT 
      *
    FROM 
      EmulationSessions
    where StaffUser = 'person'
    AND Active = 1
    AND Created < '2017-05-02 15:38:13'