请使用sql server中的convert函数,后面加上相应的style就可以了,里面有很多样式可以供参考sqlserver-datetime转换格式简介
成都创新互联公司主营长顺网站建设的网络公司,主营网站建设方案,APP应用开发,长顺h5微信小程序开发搭建,长顺网站营销推广欢迎长顺等地区企业咨询
请参阅!
在SQL SERVER 2005中,将表中字符串转换为数字的函数共2个:
1. convert(int,字段名) 例如:select convert(int,'3')
2. cast(字段名 as int) 例如:select cast('3' as int)
其实,一般情况下没有必要把字符串转换为数字类型
假如需要比较两个字段是否相等,但是一个字段为字符串类型,一个为数字类型,用“=”比较两个值是否相等时,SQL SERVER会自动把字符串转换为数字再比较的!
例如:
select da.TITLE_NAME,dsc.NAME
from dbo.DV_DUTY dd
inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA)
left join DV_ASSET da on(da.ID=dd.RECORD_ID and dd.TYPE='2')
where dd.AREA is not null
这个SQl中,inner join DV_SECOND_CLASS dsc on (dsc.ID=dd.AREA) 中dsc.ID为数字类型,dd.AREA为字符类型,相当于这样on(1='1')的判断,这时候就会自动吧字符串的'1'转换为数字类型再比较的。
但是也有弊端,一旦字符类型转换为数字类型出错(说明字符串的确就非数字组成的),SQL就会抛出异常。
SQL SERVER 2005中有判断字段是否为数字的函数:
ISNUMERIC(字段名) -----假如字段是数字类型返回1,不是就返回0
但是好像有的时候不好使,比如:select isnumeric('3,34') 就返回1
说明这个函数对字段值中全是数字但是数字间用“,”和“.”(逗号或点)隔开的都视为数字了!
以上回答正确,只是数据类型未进行转换,也可以使用cast来转
select
cast(year(workon)
as
varchar(4))
+'年'+cast(month(workon)
as
varchar(2))+'月'+cast(day(workon)
as
varchar(2))+'日'
from
table_name
DATEADD(dd, DATEDIFF(dd,0,getdate()), 0)的意思是返回当前日期
dd为日期分量代表day,还有其它的如month,year等
dateadd 为计算某个日期之前或之後多少个日期分量的时间,如计算今天之前10天的时间为
dateadd(dd,'2012-10-26',-10),之後10天日期为dateadd(dd,'2012-10-26',10)
datediff 计算两个日期之前日期分量的个数,如计算两个日期之间的天数:datediff(dd,'2012-9-10','2012-9-11')
此处的0代表'1900-1-1'
整个表达式相当於DATEADD(dd, DATEDIFF(dd,'1900-1-1',getdate()), '1900-1-1')
即先计算当臆系统时间与1900-1-1之间的天数,再计算1900-1-1加上这个天数的日期。
有的,用convert,要什麼样的格式可以参照如下:
给你个例子,要转成2012/12/12
select convert(nvarchar(10),日期,111)
- 0 或 100 (1,2) 预设值 mon dd yyyy hh:miAM (或 PM)
1 101 U.S. mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yyyy
4 104 德国 dd.mm.yy
5 105 义大利 dd-mm-yy
6 106 (1) - dd mon yy
7 107 (1) - Mon dd, yy
8 108 - hh:mi:ss
- 9 或 109 (1,2) 预设值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM (或 PM)
10 110 USA mm-dd-yy
11 111 JAPAN yy/mm/dd
12 112 ISO yymmddyyyymmdd
- 13 或 113 (1,2) 欧洲预设值 + 毫秒 dd mon yyyy hh:mi:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (2) ODBC 标准 yyyy-mm-dd hh:mi:ss(24h)
- 21 或 121 (2) ODBC 标准 (含毫秒) yyyy-mm-dd hh:mi:ss.mmm(24h)
- 126 (4) ISO8601 yyyy-mm-ddThh:mi:ss.mmm (无空格)
- 127(6, 7) 具有时区 Z 的 ISO8601。 yyyy-mm-ddThh:mi:ss.mmmZ(无空格)
- 130 (1,2) 回历 (5) dd mon yyyy hh:mi:ss:mmmAM
- 131 (2) 回历 (5) dd/mm/yy hh:mi:ss:mmmAM