我在比较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");
我还缺少另一个转换步骤吗?
答案 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
来实现相同目标。