有人可以告诉我这里缺少什么吗?我认为我的代码看起来很漂亮,直到我为昨天的结果运行最后两行。列在那里,但它们是空的。如果我使用已注释的日期行,则数据会完美显示。这让我觉得错误是在选择转换语句中...但我已经尝试过每一件事。
SELECT RTRIM(r.acct_no) as acct_no, CONVERT(varchar,t.doc_date,101)as doc_date, t.doc_amt,
LEFT(t.batch_no,4) as batch_no
FROM ESUTRANH t
INNER JOIN ESUTRAND d on t.tran_id = d.tran_id
INNER JOIN ESUACCTR r on d.acct_id = r.acct_id
INNER JOIN ESUCUSTJ j on r.acct_id = j.acct_id
WHERE (t.batch_no is null or LEN(t.batch_no) > 1)
--AND t.doc_date between '05/09/2017' and '05/10/2017'
AND t.doc_date >= dateadd(day,datediff(day,1,GETDATE()),0)
AND t.doc_date < dateadd(day,datediff(day,0,GETDATE()),0)
答案 0 :(得分:0)
根据连接/服务器语言设置AND t.doc_date between '05/09/2017' and '05/10/2017'
可能意味着:
'DD/MM/YYYY'
格式。'MM/DD/YYYY'
格式。最好使用不依赖于语言配置的日期格式,例如'YYYYMMDD'
,例如AND t.doc_date between '20170509' and '20170510'
。
答案 1 :(得分:0)
从您的查询中,
- 在'05 / 09/2017'和'05 / 10/2017'之间的时间和日期
以上是获得1个月的数据。
以下代码是获取昨天的数据
AND t.doc_date&gt; = dateadd(day,datediff(day,1,GETDATE()),0)
AND t.doc_date&lt; DATEADD(日,DATEDIFF(日,0,GETDATE()),0)
你能否检查一下你的表是否有昨天的数据。