01JAN 02FEB 03OCT范围计算问题急!
数据
ID FDATE
1 01JUN
2 02FEB
3 21JUN
4 03JAN
5 25NOV
6 30DEC
。。。。
要求查询出,01JAN-0JUN 的数据怎么做比较好!
[解决办法]
cREATE TABLE MT(
ID INT , FDATE NVARCHAR(20))
INSERT INTO MT SELECT 1, '01JUN '
UNION SELECT 2, '02FEB '
UNION SELECT 3, '21JUN '
UNION SELECT 4, '03JAN '
UNION SELECT 5, '25NOV '
UNION SELECT 6, '30DEC '
declare @s nvarchar(20)
set @S= '01JAN '
declare @e nvarchar(20)
set @e= '01JUN '
SELECT ID ,FDATE FROM MT
where cONVERT(datetime, stuff(FDATE,3,0, ' ')+ ' 1900 ') between
cONVERT(datetime, stuff(@S,3,0, ' ')+ ' 1900 ') and cONVERT(datetime, stuff(@e,3,0, ' ')+ ' 1900 ')
ID FDATE
----------- --------------------
1 01JUN
2 02FEB
4 03JAN
(3 row(s) affected)
[解决办法]
select cONVERT(datetime, stuff( '21JUN ',3,0, ' ')+ ' 1900 ')
从字符串转换为 datetime 时发生语法错误。
--为什么我这里出现语法错误的呢?
看了联机帮助
SQL Server 可以识别以下列格式括在单引号 ( ') 中的日期和时间:
字母日期格式(例如, 'April 15, 1998 ')
数字日期格式(例如, '4/15/1998 '、 'April 15,1998 ')
未分隔的字符串格式(例如 '19981207 '、 'December 12, 1998 ')
但是我用 'April 15,1998 '也会出错..