首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Server数据转换

Server数据转换
EN

Database Administration用户
提问于 2014-03-07 22:08:12
回答 2查看 187关注 0票数 0

关于适用“所在地”条件:

代码语言:javascript
复制
WHERE DateFilled BETWEEN '02/01/2014' AND '02/28/2014'

我的语法不是检测02/28/2014上填充的值。

如果我将语法写成

代码语言:javascript
复制
WHERE DateFilled >= '02/01/2014'  

我正在得到输出。

在Server表中,DateFilled列的值如下所示。

代码语言:javascript
复制
2014-02-28 09:24:00.000

可能是什么原因?任何日期转换都是必需的。如何使用StartDateEndDate条件获取BETWEEN

EN

回答 2

Database Administration用户

回答已采纳

发布于 2014-03-07 22:57:00

我假设DateFilled具有DateTime的数据类型或包含时间部分的其他日期类型。在T中使用DateTime值时,请注意总是包含时间,如果没有指定,默认使用午夜。参见:http://technet.microsoft.com/en-us/library/ms180878(v=sql.105).aspx#ConversionBetweenStringLiteralsandDateandTimeDataTypes,当输入字符串为“仅日期”时,则“时间部分默认为00:00:00”。在您的示例中,字符串"02/28/2014“转换为日期时间值为2014-02-2800:00:00.000。

您的查询被解释为'02/01/2014 00:00:00.000‘和'02/28/2014 00:00:00 :00.000’之间的.000,因此找不到日期为2014-02-28 09:24:00.000 (在午夜后发生的记录)。

您的查询可以重写为

代码语言:javascript
复制
SELECT Column1, Column2
FROM MyTable
WHERE DateFilled >= '02/01/2014'
   AND DateFilled < '03/01/2014';
票数 6
EN

Database Administration用户

发布于 2014-03-08 19:06:55

尝试:

代码语言:javascript
复制
WHERE CAST(DateFilled AS DATE) BETWEEN '02/01/2014' AND '02/28/2014'

这将日期时间变量转换为不包含时间的日期变量。不过,这在Server 2000或2005中不起作用。Server 2008中引入了日期数据类型。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/60458

复制
相关文章

相似问题

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