首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >选择日期范围为varchar的某个日期范围内的数据

选择日期范围为varchar的某个日期范围内的数据
EN

Stack Overflow用户
提问于 2010-08-27 05:31:11
回答 3查看 2.3K关注 0票数 1

我有一个存储日期的varchar reporttime。不要问我为什么是varchar

我这样做是为了获取两个日期之间的数据:

代码语言:javascript
运行
复制
select rowid 
 from batchinfo 
where CONVERT(DATE, reporttime, 103) between '2010-07-01' and '2010-07-31'

而且它不起作用

我做错了什么?

顺便说一句,数据是这样的:

代码语言:javascript
运行
复制
rowid   datapath                                                        analysistime       reporttime
4695    F:\MassHunter\DATA\6897_Pan_1\QuantResults\6897_Pan_1.batch.bin  1/2/2010 8:13 AM   1/2/2010 8:25 AM
4696    F:\MassHunter\DATA\6897_Pan_2\QuantResults\6897_Pan2.batch.bin   1/2/2010 8:21 AM   1/2/2010 8:33 AM
4697    F:\MassHunter\DATA\6903_Pan_1\QuantResults\6903_P1.batch.bin     1/2/2010 9:41 AM   1/2/2010 9:46 AM
4698    F:\MassHunter\DATA\6903_Pan_2\QuantResults\6903_Pan2.batch.bin   1/2/2010 9:50 AM   1/2/2010 9:57 AM
4699    F:\MassHunter\DATA\6915_Pan_1\QuantResults\6915_pan1.batch.bin   1/2/2010 10:09 AM  1/2/2010 10:33 AM
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-08-27 05:38:54

首先,我假设你的样本数据不符合条件,对吗?

其次,您可能仍在进行字母数字比较,而不是日期时间比较。尝试执行此操作以强制执行日期时间比较。

代码语言:javascript
运行
复制
select rowid 
from batchinfo 
where CONVERT(DATE, reporttime, 103)
    between cast('2010-07-01' as datetime) and CAST('2010-07-31' as datetime)

CAST操作符类似于CONVERT,也可以使用。

票数 2
EN

Stack Overflow用户

发布于 2010-08-27 05:43:19

转换样式103是dd/mm/yyyy (欧洲格式),所以你可以颠倒你的月份和日期。请尝试使用101。

票数 1
EN

Stack Overflow用户

发布于 2010-08-27 12:06:00

要查找您的坏数据,请尝试以下命令:

代码语言:javascript
运行
复制
SELECT *
FROM batchinfo 
WHERE IsDate(reporttime) = 0
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3579695

复制
相关文章

相似问题

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