sql语句,求解!!!

在SQL语句中我怎样将“20130105” 转换为yyyy-mm-dd的格式
数据表中没有日期,数据表中只有name,grade,id列(id是随机数,根据当前日期+4个随机数得到的,比如:201301220004),我现在需要得到日期,我通过截取字符串得到了20130122,我怎样将这个值转换为2013-01-22或者2013-1-22这种格式的;数据库中的表是不允许改的;

select a.name , a.grade , a.id, substring(a.id,1,8) as '日期' from a
该咋改?

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06 Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16 Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06 Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06 Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06 Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06 Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06 Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46 Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06 Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16 Select CONVERT(varchar(100), GETDATE(), 12): 060516 Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937 Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967 Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47 Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157 Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16 Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47 Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250 Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006 Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16 Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006 Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006 Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006 Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006 Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006 Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49 Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006 Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16 Select CONVERT(varchar(100), GETDATE(), 112): 20060516 Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513 Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547 Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49 Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700 Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827 Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM 在SQL数据库中,有一类函数是不得不提的,那就是SQL Server日期时间函数,这是SQL Server处理日期和时间最常用的函数,下面就将为介绍这类函数。Sql Server日期与时间函数:1. 当前系统日期、时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.0003. datediff 返回跨两个指定日期的日期和时间边界数。select datediff(day,'2004-09-01','2004-09-18') --返回:174. datepart 返回代表指定日期的指定日期部分的整数。SELECT DATEPART(month, '2004-10-15') --返回 105. datename 返回代表指定日期的指定日期部分的字符串SELECT datename(weekday, '2004-10-15') --返回:星期五6. day(), month(),year() --可以与datepart对照一下select 当前日期=convert(varchar(10),getdate(),120) ,当前时间=convert(varchar(8),getdate(),114)select datename(dw,'2004-10-15')select 本年第多少周=datename(week,'2004-10-15'),今天是周几=datename(weekday,'2004-10-15')SQL Server日期函数 参数/功能 GetDate( ) 返回系统目前的日期与时间DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称参数interval的设定值如下:值缩写(Sql Server) (Access 和 ASP) 说明Year Yy yyyy 年 1753 ~ 9999Quarter Qq q 季 1 ~ 4Month Mm m 月1 ~ 12Day of year Dy y 一年的日数,一年中的第几日 1-366Day Dd d 日,1-31Weekday Dw w 一周的日数,一周中的第几日 1-7Week Wk ww 周,一年中的第几周 0 ~ 51Hour Hh h 时0 ~ 23Minute Mi n 分钟0 ~ 59Second Ss s 秒 0 ~ 59Millisecond Ms - 毫秒 0 ~ 999Access 和Asp中用date()和now()取得系统日期时间;其中DateDiff,DateAdd,DatePart也同是能用于Access和asp中,这些函数的用法也类似。SQL Server日期函数举例:1.GetDate() 用于sql server :select GetDate()2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期一(周日为1,周六为7)DatePart('d','2005-7-25 22:56:32')返回值为 25即25号DatePart('y','2005-7-25 22:56:32')返回值为 206即这一年中第206天DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年关于SQL Server日期时间格式转换字符串的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!追问

你给我发的我都看过了,但没有我需要的啊:

数据表中没有日期,数据表中只有name,grade,id列(id是随机数,根据当前日期+4个随机数得到的,比如:201301220004),我现在需要得到日期,我通过截取字符串得到了20130122,我怎样将这个值转换为2013-01-22或者2013-1-22这种格式的;数据库中的表是不允许改的;
我的sql语句:
select a.name , a.grade , a.id, substring(a.id,1,8) as '日期' from a
该咋改?

追答

用convert函数转换下就行了,不懂的可以搜下convert用法。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-24
这句convert(datetime,'20130105',21)得到2013-01-05 00:00:00.000完整的年月日时分秒,
这句convert(varchar(10),convert(datetime,'20130105',21),21) 得到2013-01-05只有年月日。
第2个回答  2013-01-24
declare @var varchar(8)
set @var='20130105'
select convert(varchar(10),cast(@var as datetime),120)

那就是这样 select a.name , a.grade , a.id, convert(varchar(10),cast(substring(a.id,1,8) as datetime),120) as '日期' from a追问

那个,我一添加 convert(varchar(10),cast(substring(a.id,1,8) as datetime),120) as '日期' 就出错,该咋办啊.....

追答

你是啥数据库啊,我这是在sql2005上面的。还有报的是什么错,把你的sql语句贴出来。。

追问

SELECT jiamgsqd.JGHSRY,jiamgsqd.ZJMSDHSLCPF,jiamgsqd.DH, convert(varchar(10),convert(datetime,' SUBSTRING(jiamgsqd.DH,1,8)',21),21) as '日期' FROM jiamgsqd where jiamgsqd.JGHSRY !=""

我用的工具看不到报的是什么,只显示“有错”字样

追答

where jiamgsqd.JGHSRY !="" 是单引号你用双引号当让不对了。而且' SUBSTRING(jiamgsqd.DH,1,8)' 不用单引号。。。

追问

我试过了,wherejiamgsqd.JGHSRY !="" 即使换成单引号也是错的,我的sql语句
SELECT ..., SUBSTRING(jiamgsqd.DH,1,8) as '日期' FROM jiamgsqd where jiamgsqd.JGHSRY !=""
这种情况下没错;
但sql语句是
SELECT ..., convert(varchar(10),convert(datetime,' SUBSTRING(jiamgsqd.DH,1,8)',21),21) as '日期' FROM jiamgsqd where jiamgsqd.JGHSRY !=""
就出错;

追答

SELECT jiamgsqd.JGHSRY,jiamgsqd.ZJMSDHSLCPF,jiamgsqd.DH,
convert(varchar(10),convert(datetime,SUBSTRING(jiamgsqd.DH,1,8),21),21) as '日期'
FROM jiamgsqd where jiamgsqd.JGHSRY !=''

' SUBSTRING(jiamgsqd.DH,1,8)' 不用单引号。。。 你用单引号的话,转化成时间类型肯定要溢出的。。。

追问

我完整的sql语句字符太多,给你发私信了,你帮我看看还有哪错了,非常感谢........

本回答被提问者采纳
第3个回答  2020-03-07

介绍sql语句如何使用函数

第4个回答  2013-01-24
存还是取?什么数据库?

执行sql语句出错,求解!!!
版本问题。试着换一个版本或者去掉ENGINE=MyISAM。

SQL语句判断是否今天,200分求解!
if len(aaaa)=1 then aaaa=0 判断是否为两位数的日期,如果是一位数,就在前面加个0。

求解:SQL语句
--go是批量提交关键字,如果不写的话,sql会默认整体一起提交的。写上go,则语句提交,当前会话结束。下同 go declare @P1 int --声明一个变量 set @P1=192 --给变量赋值 exec sp_prepare @P1 output, NULL, N'SELECT QX FROM BSGROUP_QX WHERE GROUPID=''001'' AND DLDM=''93'...

菜鸟Sql语句求解 最好把每一句都解释 一下 不胜感激、、
USE [Student]GO 以下为系统自动生成的,一般没什么用,除非你改变了系统的环境 \/*** Object: Table [dbo].[C] Script Date: 04\/19\/2011 21:25:17 ***\/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO 建立数据表 CREATE TABLE [dbo].[C](指定字段名称,类型,长度,是否允许为...

sql语句求解。mysql 系统是三级分销系统,想要一个 按照 分销团队下线...
union all --二级 select count(*) as count from table_name t1 inner join table_name t2 on t1.pid = t2.id where t2.pid= 'id'union all --三级 select count(*) as count from table_name t1 inner join (select id,pid from table_name t1 inner join table_name t2 on ...

求解SQL循环语句求和
select 销售人员 , sum(售价 * 售价提成) as 提成 from 产品销售明细 a inner join 产品折算率表 b on a.产品品种 = b.产品品种 and a.品种级别 = b.品种级别 group by 销售人员

T-SQL 语句求解
用左关联就好了,B当做主表,左边了A。select * from b left join a on b.id=a.id

用sql 语句 怎么样查询一张表的所有内容 和 另一张表的部分内容? 求解...
A LEFT JOIN B ON A.列=B.列 SELECT A表需要的列名,B表需要的列名[,……] FROM A RIGHT JOIN B ON A.列=B.列 SELECT A表需要的列名,B表需要的列名[,……] FROM A OUT JOIN B ON A.列=B.列 几种方式都可以,看你的条件需要的是那种..正常的来说,第一个SQL 就可以满足你了 ...

SQL 语句查询求解
SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUT JOIN b ON a.a = b.c B:right outer join: 右外连接(右连接):结果集既包括连接表的匹配连接行,也包括右连接表的所有行。 C:full outer join: 全外连接:不仅包括符号连接表的匹配行,还包括两个连接表中的所...

Sql统计语句求解
sum(in) as 收入,sum(out ) as 支出 from (select datetime, money as in, 0 as out from cash union all select datetime, 0 as in, money as out from expend ) as p group by Convert(varchar(10),datetime,23)把两张表合并成一张表然后将时间转换成日期分组统计。采用吧。。。

相似回答