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'
我在比较 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'