asp中sql用法!日期格式不同 如何查询指定范围数据

between我用了不行!查询出来的数据不准数据库中日期格式有点乱,有以下几种2015-1-1、2015-01-01、2015/1/1、2015/01/01我如何才可以做... between我用了不行!查询出来的数据不准
数据库中日期格式有点乱,有以下几种2015-1-1、2015-01-01、2015/1/1、2015/01/01
我如何才可以做到指定日期到指定日期内的数据。
要不然就让2015年3月份以前的数据全部不统计在内。
展开
 我来答
SQL的艺术
推荐于2018-05-09 · SQL写多了就会在追求极致
SQL的艺术
采纳数:2040 获赞数:3322

向TA提问 私信TA
展开全部

1、问题分析

日期格式不一致,格式大致应该是这样两种:2000-1-1和2000/1/1

这主要是由于操作系统不同,造成了日期的分隔符不一致。

2、解决问题

可以将这些日期格式统一格式化后进行查询

例如:

select * from 表名 where cast(日期格式不一致的列名称 as datetime) between '20001-1' and '2001-12-31 23:59:59.997'

上面的语句是查询在'20001-1' 和 '2001-12-31 23:59:59.997'之间的数据

百度网友dff5dd3
推荐于2017-09-06 · TA获得超过259个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:102万
展开全部
首先你应该把字段的日期类型改为日期时间型,如果你目前为字符串的话可以采用replace()函数把/转换为“-”横线,然后再更改字段类型。

但是让我迷惑的是,怎么回出现2014-1-1和2015/1/1这两种格式呢,我一般用2015-01-01这种格式,当然了2015-1-1和2015-01-01是相等的,2015/1/1和2015/01/01是相等的,理论上只要把/替换成-号就可以进行字段类型的更改了,
第一个SQL语句:update 表名 set 我是时间字段=replace(我是时间字段,'/','-'),把所有/字符串全部替换为-.
第二个SQL语句:update 表名 set 我是时间字段=replace(我是时间字段,' ',''),替换所有空格为空,这一句可以不加,只要你能字段类型更改成功。

备注:现在讨论下出现两种格式不统一的原因:数据库字段格式本来就设置为2015/1/1这种格式(2015/1/1这种格式在ACCESS中有人使用),但是2015-1-1却可以正确写入,既然都是日期时间型的话自然可以用SQL直接筛选啊,但是出现数据不准可能是设置错误,正确格式应该为2015-1-1 00:00:00,也就是说必须带时分秒的。默认SQL语句:select * from 表名 where 我是时间字段>='2015-1-1' and 我是时间字段<='2015-1-31',这条SQL语句的时间范围为查询2015-1-1 00:00:00 到2015-1-31 00:00:00,所以应该SQL语句应该是:select * from 表名 where 我是时间字段>='2015-1-1 00:00:00' and 我是时间字段<='2015-1-31 23:59:59',你调试下看时间段停留在哪?

如果sql语句不能用逗号的号可以改成#(ACCESS有这种毛病)
追问
asp如何将sql数据库中的月份和日全部改成双数!谢谢初学者
追答
如果是字符串形式的则用:
update 表名 set 我是时间字段=replace(我是时间字段,'-1','-01'),弄12条,
update 表名 set 我是时间字段=replace(我是时间字段,'-2','-02'),以此类推,虽然方法笨,但是好理解,我想用10分钟时间就完成的工作,你没必要去构造特别复杂的SQL语句把,可能需要1个小时效果不理想,而且容易出错。

如果是日期时间型,应该改日期时间格式就应该行的,如果你改了2015-01-01这种格式,而数据库中还是显示2015-1-1的话,其实你没必要纠结了,SQL语句只要正确,数据查询出来是正确的就行了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式