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

时间:2017-05-02 06:17:18

标签: c# sql sql-server sql-server-2014 datetime-format

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

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

我希望看到的行看起来像这样:

enter image description here

但相反,我没有结果。

当我转换当前时间时,类似的尝试匹配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");

我还缺少另一个转换步骤吗?

2 个答案:

答案 0 :(得分:1)

SQL Server defualt格式为&#39; YYYY-MM-DD&#39;,在您的情况下&#39; 02&#39;被视为月份。 像这样检查,

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

答案 1 :(得分:0)

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

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

您也可以使用CAST来实现相同目标。