我有一张表,中间有个字段F_OutDate是用来存储日期的,但字段类型是字符型由于客户的电脑上很多系统设置的日期格式都不一样,比如有些是YYYY-MM-DD格式,有的是YYYY/MM/DD,YYYY-M-D格式。现在要按月统计,怎么办?我做法是将其他格式都格式化输出为YYYY-MM格式但好像有问题。下面做法逻辑是这样的:在字段中取年份(YYYY),取月份如果单比如3就在前面加0成03YEAR(CAST(dbo.T_ExportOperation.F_OutStoreDt AS Datetime))) '-' + (CASE WHEN LEN(CONVERT(varchar(2),MONTH(CAST(dbo.T_ExportOperation.F_OutStoreDt AS Datetime)), 112)) = 1 THEN '0' + CONVERT(varchar(2),MONTH(CAST(dbo.T_ExportOperation.F_OutStoreDt AS Datetime)), 112) ELSE CONVERT(varchar(2),
MONTH(CAST(dbo.T_ExportOperation.F_OutStoreDt AS Datetime)), 112) END) AS OutStoreMonth呵呵,我估计我走错路了,请提供好的方案~谢谢
MONTH(CAST(dbo.T_ExportOperation.F_OutStoreDt AS Datetime)), 112) END) AS OutStoreMonth呵呵,我估计我走错路了,请提供好的方案~谢谢
解决方案 »
- 公司考勤系统 关于打卡的SQL语句
- 怎样在sql2000里复制一个带有主键以及其他约束的表
- sqlserver中Datetime的数据类型:yy-mm-dd hh:miss ,我只想要日期,不要后面的时间
- 如何替换sql 2000 数据库里面记录的内容
- 数据库操作错误,系统提示如下
- 请教一条SQL语句.
- 截取字符串出现乱码怎么办啊?
- 如何将数据库中所有表内的数据生成sql 脚本
- 如何写这样一个sql语句?
- 这种不兼容,我噻,我晕倒了,50分解决初级问题
- 现在的输出结果分别在Result和Message两个输出框里面,如何集中在一起?
- 【急切求助】急切需要在VB.NET2003下计算时间差的代码!!
不以客户机器时间件为准 而以服务器为准
create table datetest
(
datecon varchar(12)
)insert into datetest select '2001-01-1'
union all select '2001-1-01'
select convert(varchar(7),cast(datecon as datetime ),120) from datetest
lz是这个意思吗?
declare @t table(dt varchar(20))
insert into @t select '1996-6-10'
insert into @t select '1998/6/8'declare @b table(dt datetime)
insert into @b select * from @t
select * from @b--然后如下操作
select * from @b group by datepart(month,bt)
insert into @t select '1996-6-10'
insert into @t select '1998/6/8'
select convert(varchar(7),cast(dt as datetime),120) from @t
我的意思是数据库中已经存在用户输入的几十万行数据,字段值都是日期值,但字段类型是字符德。
现在不是说如何插入数据的问题,这个问题就让他们错,我只能在统计的时候再格式化一下里面的数据,让日期标准成 YYYY-MM ,并做成一个视图再统计视图请问如何吧数据表里面存在类如 '1996-6-10','1998/6/8'格式化成
1996-06-10, 1998-06-08 此类的值。
(
data varchar(10)
)insert [date1] select '2002-01-01'
union all select '2002/01/01'
union all select '2002-02-01'
union all select '2002/02/01'create view viewname
as
select convert(varchar(10),cast(data as datetime),120) as data2 from [date1]
(
data varchar(10)
)insert [date1] select '2002-01-01'
union all select '2002/01/01'
union all select '2002-02-01'
union all select '2002/02/01'
create view viewname(viewcolumn)
as
select cast(convert(varchar(10),cast(data as datetime),120) as datetime) from [date1]select * from viewname/*
2002-01-01 00:00:00.000
2002-01-01 00:00:00.000
2002-02-01 00:00:00.000
2002-02-01 00:00:00.000
*/
cast(convert(varchar(10),cast(data as datetime),120) as datetime)我测试了一下,发现有问题啊
得出
2002-1-1
2002-1-1
2002-2-1
2002-2-1而我想要的是:
2002-01-01
2002-01-01
2002-02-01
2002-02-01怎么办?