首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >来自Ubuntu上的MSSQL查询的空结果集

来自Ubuntu上的MSSQL查询的空结果集
EN

Stack Overflow用户
提问于 2018-11-07 16:29:04
回答 1查看 42关注 0票数 0

我在我的Ubuntu18.04和PHP 7.2上使用sqlsrv模块来运行下面的sql查询

代码语言:javascript
运行
复制
SELECT REPLACE(LTRIM(REPLACE(CardNo, '0', ' ')),' ', '0') AS staff_id,
    FORMAT(PunchDatetime, 'yyyy-MM-dd') as 'date',
    FORMAT(min(PunchDatetime), 'HH:mm:ss') AS time_in,
    IIF(min(PunchDatetime) != max(PunchDatetime), FORMAT(max(PunchDatetime), 'HH:mm:ss'), NULL) AS time_out
    FROM PunchRecords
    WHERE cast('2018-11-01' as date) = cast(FORMAT(PunchDatetime, 'yyyy-MM-dd') as date)
    group by CardNo, FORMAT(PunchDatetime, 'yyyy-MM-dd')
    order by CardNo";

在Windows上执行的相同查询从表中返回数据,但在Ubuntu环境中运行时返回空结果集。

任何关于这个问题的反馈都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2018-11-07 16:39:55

最明显的原因可能是Ubuntu上不同的日期格式。'2018-11-01‘可以解释为YYYY-MM-DD或YYYY-DD-MM。只需检查以下内容:

代码语言:javascript
运行
复制
SET LANGUAGE ENGLISH;
SELECT CAST('2014-09-13' AS DATETIME);
GO
SET LANGUAGE GERMAN;
SELECT CAST('2014-09-13' AS DATETIME);--ERROR: there's no month "13"
GO

在比较日期时,只比较日期-不要将其转换为字符串。只需使用:

代码语言:javascript
运行
复制
WHERE '20181101' = cast(PunchDatetime as date)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53185780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档