相关疑难解决方法(0)

日期之间的T-SQL混乱

我在SQL Server 2000中使用T-SQL,我有一个表TRANSACTIONS,其日期列TRANDATE定义为DateTime,以及与此问题无关的许多其他列.

该表填充了多年的交易.我遇到了代码,测试,让我困惑.有一个简单的SELECT,像这样:

SELECT TRANDATE, RECEIPTNUMBER FROM TRANSACTIONS WHERE TRANDATE BETWEEN '12/01/2010' and '12/31/2010' ORDER BY TRANDATE
Run Code Online (Sandbox Code Playgroud)

并且它不返回我知道在该表中的两行数据.

通过上面的语句,它返回的最后一行按顺序TRANDATE为:2010-12-31 00:00:00.000

当我修改如下所示的语句时,我获得了该表中2010年12月的额外两行:

SELECT TRANDATE, RECEIPTNUMBER FROM TRANSACTIONS WHERE TRANDATE BETWEEN '12/01/2010 00:00:00' and '12/31/2010 23:59:59' ORDER BY TRANDATE
Run Code Online (Sandbox Code Playgroud)

我试图找出为什么BETWEEN运营商在12/31/2010使用第一个SELECT,上面的24个时期内不包括所有行.为什么它需要将明确的小时数添加到SELECT语句中,如第二个修改后的语句中所示,以使其拉出正确的行数?

是因为这种方式TRANDATE被定义为" DATETIME"?

基于这个发现,我认为我将不得不经历所有这些旧代码,因为这些BETWEEN操作符遍布这个旧系统,似乎并没有正确地提取所有数据.我只想先从一些人那里得到澄清.谢谢!

t-sql sql-server-2000 between

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

between ×1

sql-server-2000 ×1

t-sql ×1