首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何格式化日期在哪里?

如何格式化日期在哪里?
EN

Stack Overflow用户
提问于 2020-03-03 13:35:14
回答 3查看 3K关注 0票数 1

我有这个脚本:

代码语言:javascript
复制
select * from OPDN A 
where A."DocDate" between '2020/01/01' and '2020/01/31'

如何在WHERE子句中实现MM/DD/YYYY格式?

代码语言:javascript
复制
select * from OPDN A 
where A."DocDate" between '01/01/2020' and '01/31/2020'

DocDate的类型为TimeStamp

EN

回答 3

Stack Overflow用户

发布于 2020-03-04 11:59:35

如果列数据类型是TIMESTAMP,就像OP在对Sandra Rossi的优秀答案的评论中所写的那样,那么实际上需要进行三次转换才能使选择按预期工作。

  1. 旋转第一个选择参数(在...之间)将第二个选择参数转换为date
  2. (介于...和b)转换为日期
  3. 将时间戳列DocDate转换为日期

这看起来像这样:

代码语言:javascript
复制
select 
        * 
from 
     OPDN A 
where 
    to_date(A."DocDate") between to_date('01/01/2020', 'MM/DD/YYYY')
                             and to_date('01/31/2020', 'MM/DD/YYYY');

在格式字符串的帮助下,选择参数的转换应该是显而易见的,并且结果是SQL date数据类型中的相同信息。

第三个转换(to_date(a."DocDate"))可能会令人惊讶,但它相当重要。

选择的工作方式是包括从选择期的最开始到最后的所有内容。如果输入筛选器简单地转换为时间戳,那么它们将具有00:00 (午夜)的时间分量,因为没有提供关于一天中的时间的细节。

这将导致排除午夜之后的所有"DocDate“值

这里正确的比较级别是date,因此"DocDate“也需要转换为无小时的date数据类型。

附注:我刚刚意识到选择标准是以MM/DD/YYYY格式给出的,这可能是OP之前收到转换错误的原因。

票数 3
EN

Stack Overflow用户

发布于 2020-03-03 21:33:10

这取决于列DocDate的类型和格式。

  1. 在SAP ERP软件(R/3,ECC,S/4HANA)中,日期过去定义为NVARCHAR8字符类型,格式为‘TIMESTAMP.

’。

  • 在SAP Business One中,我不知道...

针对每种情况的解决方案:

select * from OPDN A where A."DocDate" between to_date('01/01/2020','DD/MM/YYY') and to_date('01/31/2020', 'DD/MM/YYY')

  1. 如果DocDate类型是NVARCHAR8,格式为YYYYMMDD:select * from OPDN A where A."DocDate" between '20200101' and '20200131'
  2. In SAP Business One,我不知道...
  3. 如果DocDate类型是DATE
票数 2
EN

Stack Overflow用户

发布于 2020-03-03 14:04:41

在Oracle中,它可以做到这一点

代码语言:javascript
复制
select * from OPDN A 
where to_date(A."DocDate", 'DD/MM/YYY') between to_date('01/01/2020','DD/MM/YYY') and to_date('01/31/2020', 'DD/MM/YYY');
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60500681

复制
相关文章

相似问题

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