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

between我用了不行!查询出来的数据不准
数据库中日期格式有点乱,有以下几种2015-1-1、2015-01-01、2015/1/1、2015/01/01
我如何才可以做到指定日期到指定日期内的数据。
要不然就让2015年3月份以前的数据全部不统计在内。

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'之间的数据

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-06
首先你应该把字段的日期类型改为日期时间型,如果你目前为字符串的话可以采用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语句只要正确,数据查询出来是正确的就行了

本回答被提问者采纳
相似回答