无忧岛

29 一, 2010

苹果iPad平板电脑投票调查

Posted by: kinglife In: IT

截至2010年1月29日,新浪网关于苹果iPad平板电脑投票调查结果:
 

你认为iPad最吸引你的是

选项 比例 票数
时尚外观设计 43.5% 9,655
体积小巧便携 26.7% 5,929
苹果金字招牌 23.6% 5,240
其他 6.2% 1,380

我们从从苹果的产品来看,不管是从电话iPhone,音乐iPod,还是笔记本MacBook都可以归结于一个特点:就是时尚的外观设计,苹果产品外观设计上无可置疑是十分成功的.

你认为苹果平板电脑合理售价是多少(折合人民币):

选项 比例 票数
4000元以内 63.7% 14,144
4000元-6000元 24.8% 5,504
6000元-8000元 7.4% 1,637
8000元以上 4.1% 919

低价格依然是消费者关注的焦点

你你是否会购买苹果平板电脑?

选项 比例 票数
44.1% 9,798
看情况决定 36.5% 8,095
不会 19.4% 4,311

有80%的用户对iPad是比较有意向的.

感谢新浪网提供调查数据!

24 十二, 2009

未到伤心处,正是伤心时

Posted by: kinglife In: Diary

不停地工作,不停地繁忙,不停地让自己动起来,不给自己宁静下来的机遇和理由,是为了让自己忘记应当忘却的东西。可当夜晚来临的时候,当深夜一个人的时候,谁能把持住自己的大脑?谁又能完整放下心中的所想和所思?

23 十二, 2009

搞定ascii+md5+base64_decode加密

Posted by: kinglife In: IT

ascii+md5+base64_decode解密

ascii+md5+base64_decode解密

老外的思路果然是牛.

本来今天想写个解密程序的,但是想想为啥不借鉴下人家的加密算法呢?  所以自己弄明白就ok了,于是就放弃了. 但是思路还是跟大家分享下

  • 1.文件名称调用的时候用MD5加密
  • 2.部分HTML内容用ASCII加密
  • 3.部分HTML内容用Base64_decode 再次加密
  • PS:这玩意我用谷歌.CN  找了N次找不到一点点资料,还是谷歌.COM上找到些资料.

    22 十二, 2009

    得与失

    Posted by: kinglife In: Diary

    昨天很背,鸭子的QQ被盗,导致我被盗Q者拐走了88块人民币

    在这里提醒下各位朋友 QQ上任何人让你帮忙汇款/充卡等等 请电话审核后再确定.

    蜗牛说这是好数字   也是呢 谢谢安慰我的朋友

     

    今天经过不懈努力 终于搞定了图片存储(image hosting)方案,图片存储方案国内应用最多的就是”淘宝相册”,也见过各种平台的ASP.NET的多些,而我选择的是PHP,目前汉化工作继续进行ing…

     

    不得不承认国外的各种资源比国内丰富.

    但是今天找英文资源有一个缺陷,但是严格的说不是什么缺陷,而且出现这种情况的几率几乎为零:网站的检索结果中重复内容少,如果你找的内容中地址已经失效这会很麻烦,今天就遇到这样的事,谷歌的检索结果中出现的两个我所需要的信息地址,域名已经全部失效了…然后不得不换关键词,换了N次找到我所需要的东西..我想形成这种差异的根源还是版权问题吧,老外对版权是相当重视的.一篇文章如果未经允许的情况下是不可以copy的.

    而在中文环境下不存在这个问题,你无论找个资料在搜索引擎的检索结果中会出现N个重复的内容,一个地址失效那么pass,继续下一个.. 但是如果是软件同样存在盗链/死链等现象,无疑这会给你浪费掉很多时间…还有一个严重的现象,不得不提一下,即使你打开了你要找的内容,是否发现很难找到真正的下载地址呢??到处都是混淆视线的写着”立即下载”的广告图片呢?有的甚至绑了流氓软件,中国的互联网的确是十分混乱的..所以当你找软件的时候还是建议到.天空和华军这类大站去吧,直接脱离搜索引擎.没必要在它这上面浪费时间.

     

    李嘉诚说过:互联网是一次新的商机,每一次新商机的到来,都会造就一批富翁

     

    造就富翁的原因是:当别人不理解他在做什么的时候,他理解他在做什么.当别人不明白他在做什么的时候,他明白他在做什么.当别人明白了,他富有了.当别人明白了,他成功了。

    机会:你看不懂,你朋友看不懂,你的对手看得懂。
    事业:你不做,你身边的人不做,你未来的老板去做。

    谁也阻挡不住社会的发展和时代的进步。在潮流和趋势面前,谁先改变观念,谁就拥有了市场!信息时代,商机时代,信息和机遇相随相伴,而机遇总是垂青于有思想、有准备和敢于尝试的人.

    29 十, 2009

    带宽与实际下载速度的算法

    Posted by: kinglife In: IT

    很多用户可能对自己的下载速度和安装的网络带宽存在误区: 我安装的1M的带宽怎么下载速度连500KB都不到呢??.那么今天主要说下网络下载速度与带宽的关系.

    所谓1M宽带,其实是指 1Mbps (bits per second),即 1 x 1024 / 8 = 128KB/sec,但这只是理论上的速度,实际上则要再扣约 12% 的 Ethernet Header, IP Header, TCP Header, ATM Header 等控制讯号,故其传输速度上限应为101KB/sec 左右.但是受现实中的各种原因的影响,可能还要比这个数字还要低,一般来说1M的速度不低于100KB/sec就不错了.
    写成公式即是:

    M 代表接入带宽,N表示实际带宽(这里的单位是kb,N的结果就是N kb/s)
    M * 1024 / 8= N

    说简单的,就是所谓的多少M/K带宽除以8就得出实际的传输速度.
    另外在传输单位的写法上,Bb 分别代表 Bytes bits,两者的定义是不同的,千万不要混淆.

    带宽单位之间的换算:

  • 1 Byte = 8 bits
  • 1 Kb = 1024 bits
  • 1 KB = 1024 bytes
  • 1 Mb = 1024 Kb
  • 1 MB = 1024 KB
  • 常用宽带最高下载理论值

  • 1.5 M =169 KB/s
  • 2M=225.28KB/s
  • 3 M =338 KB/s
  • 6 M =676 KB/s
  • 10 M =1126 KB/s
  •   以上谈到的是理论值,对于实际的连接速度可以通过下载文件的方法来测试,看看离理论值有多远,另外有一些网速测试网站,也可以测试家中正在使用的宽带服务质量.
    影响上 / 下传速度的因素:

      事实上,影响传输速度的因素很多,无论哪一家宽带服务供货商,都不能保证每个用户 24 小时均拥有均衡、全速的频宽,以下解说种种原因:

      本地网络的地区频宽限制
      以一般 1M 或 512K 宽带为例,用户家中的 ADSL Modem 会直接接驳到机楼,再接驳至该区的总机楼,然后各区的总机楼再接驳到 ISP.如果该区的宽带用户特别多,而所有传输均要经由机楼与机楼之间的光纤完成,该区的光纤可传输总容量便会成为传输速度的樽颈.

      不同国家地区的频宽限制
      在测试中,联机到美国地区的上传速度为 47.375KB/s,但曾经传送大型档案给美国的一位朋友,上传速度可达 4xxKB/s<对方使用 FlashGet 软件>故传输速度是否能达到 6M,也要视乎用户与该地区之间的频宽是否足够.

      Peak Hour
      所谓 Peak Hour,就是该地区的宽带用户同时上网比率最高的时段,极大量用户会在此段时间内浏览网页,下载档案,进行在线游戏等等,约该 ISP 的频宽总容量不足以分配 6M 于每个用户的话,频宽便会摊分开来,结果每个用户的最高频宽便会低于 6M,甚至只得更低的传输速度.

    27 十, 2009

    SQL统计常用时间函数

    Posted by: kinglife In: SQL Server

    统计在数据库中是最常见也是必不可少的,前段时间用Teechat控件使用统计遇到的一些SQL语句整理一下,重点常用函数有datediff()和datepart(),下面大概讲述下这些函数.

    计算时间的函数中有,年(yy),季(q),月(m),周(ww),时期(w),天(d),时(hh),分(n),秒(s)

    getdate():返回当前日期

    获取当前月份的天数:

    
    select datediff(d,getdate(),dateadd(m,1,getdate()))
    

    获取当前年,季,月,周,天,时,分,秒:

    
    select datepart(yy,getdate()) //年
    select datepart(q,getdate())  //季
    select datepart(m,getdate())  //月
    select datepart(ww,getdate())//周
    select datepart(w,getdate())  //星期,从0开始.
    select datepart(d,getdate())  //天
    select datepart(hh,getdate())//时
    select datepart(n,getdate()) //分
    select datepart(s,getdate()) //秒
    

    获取当前天的前后五天日期:

    
    select dateadd(dd,5,getdate())
    select dateadd(dd,-5,getdate())
    

    获取当前日期与目标日期相差的年,月,周,日,时,分,秒:

    
    select datediff(yy,'2005-01-01 14:12:01',getdate())
    select datediff(q,'2005-01-01 14:12:01',getdate())
    select datediff(m,'2005-01-01 14:12:01',getdate())
    select datediff(ww,'2005-01-01 14:12:01',getdate())
    select datediff(d,'2005-01-01 14:12:01',getdate())
    select datediff(hh,'2005-01-01 14:12:01',getdate())
    select datediff(n,'2005-01-01 14:12:01',getdate())
    select datediff(s,'2005-01-01 14:12:01',getdate())
    

    获取当前月份添加的信息:

    
    select count(*) as num, Origin from ks_article month(getdate())=DatePart("m",adddate) group by Origin
    

    27 十, 2009

    SQL Server和Oracle常用时间日期处理语句

    Posted by: kinglife In: Database

    在SQL语句中,常常用会对时间(或日期)进行一些处理,下面是比较通用的一些语句:

    延迟:

    
    sysdate+(5/24/60/60)          在系统时间基础上延迟5秒
    
    sysdate+5/24/60               在系统时间基础上延迟5分钟
    
    sysdate+5/24                  在系统时间基础上延迟5小时
    
    sysdate+5                     在系统时间基础上延迟5天
    
    add_months(sysdate,-5)        在系统时间基础上延迟5月
    
    add_months(sysdate,-5*12)     在系统时间基础上延迟5年
    

    上月末的日期:

    
    select last_day(add_months(sysdate, -1)) from dual;
    

    本月的最后一秒:

    
    select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual
    

    本周星期一的日期:

    
    select trunc(sysdate,'day')+1 from dual
    

    年初至今的天数:

    
    select ceil(sysdate - trunc(sysdate, 'year')) from dual;
    

    今天是今年的第几周 :

    
    select to_char(sysdate,'fmww') from dual
    

    今天是本月的第几周:

    
    SELECT TO_CHAR(SYSDATE,'WW') - TO_CHAR(TRUNC(SYSDATE,'MM'),'WW') + 1 AS "weekOfMon" FROM dual
    

    本月的天数

    
    SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
    

    今年的天数

    
    select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual
    

    下个星期一的日期

    
    SELECT Next_day(trunc(SYSDATE),'monday') FROM dual
    

    ================================

    计算工作日方法

    
    create table t(s date,e date);
    
    alter session set nls_date_format = 'yyyy-mm-dd';
    
    insert into t values('2003-03-01','2003-03-03');
    
    insert into t values('2003-03-02','2003-03-03');
    
    insert into t values('2003-03-07','2003-03-08');
    
    insert into t values('2003-03-07','2003-03-09');
    
    insert into t values('2003-03-05','2003-03-07');
    
    insert into t values('2003-02-01','2003-03-31');
    
    -- 这里假定日期都是不带时间的,否则在所有日期前加trunc即可.
    
    select s,e,e-s+1 total_days, trunc((e-s+1)/7)*5 + length(replace(substr('01111100111110',to_char(s,'d'),mod(e-s+1,7)),'0','')) work_days from t;
    
    -- drop table t;
    

    ====================================================

    判断当前时间是上午下午还是晚上

    
    SELECT CASE
    WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 6 AND 11 THEN '上午'
    
    WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 11 AND 17 THEN '下午'
    
    WHEN to_number(to_char(SYSDATE,'hh24')) BETWEEN 17 AND 21 THEN '晚上'
    
    END
    
    FROM dual;
    

    ===================================================

    Oracle 中的一些处理日期

    将数字转换为任意时间格式.如秒:需要转换为天/小时

    
    SELECT to_char(floor(TRUNC(936000/(60*60))/24))||'天'||to_char(mod(TRUNC(936000/(60*60)),24))||'小时' FROM DUAL
    

    TO_DATE格式

    
    Day: 
    
    dd number 12 
    
    dy abbreviated fri 
    
    day spelled out friday 
    
    ddspth spelled out, ordinal twelfth 
    
    Month: 
    
    mm number 03 
    
    mon abbreviated mar 
    
    month spelled out march 
    
    Year: 
    
    yy two digits 98 
    
    yyyy four digits 1998 
    

    24小时格式下时间范围为: 0:00:00 - 23:59:59….

    12小时格式下时间范围为: 1:00:00 - 12:59:59 ….

    1. 日期和字符转换函数

    用法(to_date,to_char)

    2.

    
    select to_char( to_date(222,'J'),'Jsp') from dual 
    

    显示Two Hundred Twenty-Two

    3. 求某天是星期几

    
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day') from dual; 
    
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; 
    

    设置日期语言

    
    ALTER SESSION SET NLS_DATE_LANGUAGE='AMERICAN'; 
    

    也可以这样

    
    TO_DATE ('2002-08-26', 'YYYY-mm-dd', 'NLS_DATE_LANGUAGE = American') 
    

    4. 两个日期间的天数

    
    select floor(sysdate - to_date('20020405','yyyymmdd')) from dual; 
    

    5. 时间为null的用法

    
    select id, active_date from table1
    UNION
    select 1, TO_DATE(null) from dual; 
    

    注意要用TO_DATE(null)

    6.

    
    a_date between to_date('20011201','yyyymmdd') and to_date('20011231','yyyymmdd') 
    

    那么12月31号中午12点之后和12月1号的12点之前是不包含在这个范围之内的.

    所以,当时间需要精确的时候,觉得to_char还是必要的

    7. 日期格式冲突问题

    输入的格式要看你安装的ORACLE字符集的类型, 比如:

    US7ASCII, date格式的类型就是: ‘01-Jan-01′

    
    alter system set NLS_DATE_LANGUAGE = American 
    
    alter session set NLS_DATE_LANGUAGE = American 
    

    或者在to_date中写

    
    select to_char(to_date('2002-08-26','yyyy-mm-dd'),'day','NLS_DATE_LANGUAGE = American') from dual; 
    

    注意我这只是举了NLS_DATE_LANGUAGE,当然还有很多, 可查看

    
    select * from nls_session_parameters
    select * from V$NLS_PARAMETERS 
    

    8.

    
    select count(*)
    from ( select rownum-1 rnum
    from all_objects
    where rownum <= to_date('2002-02-28','yyyy-mm-dd') - to_date('2002-02-01','yyyy-mm-dd')+1 )
    where to_char( to_date('2002-02-01','yyyy-mm-dd')+rnum-1, 'D' )
    not in ( '1', '7' ) 
    

    查找2002-02-28至2002-02-01间除星期一和七的天数

    在前后分别调用DBMS_UTILITY.GET_TIME, 然后将结果相减(得到的是1/100秒, 而不是毫秒).

    9.

    
    select months_between(to_date('01-31-1999','MM-DD-YYYY'),
    to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
    1
    select months_between(to_date('02-01-1999','MM-DD-YYYY'),
    to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
    1.03225806451613 
    

    10. Next_day的用法

    
    Next_day(date, day) 
    
    Monday-Sunday, for format code DAY
    Mon-Sun,       for format code DY
    1-7,           for format code D 
    

    11

    
    select to_char(sysdate,'hh:mi:ss') TIME from all_objects 
    

    注意:第一条记录的TIME 与最后一行是一样的

    可以建立一个函数来处理这个问题

    
    create or replace function sys_date return date is
    begin
    return sysdate;
    end;
    select to_char(sys_date,'hh:mi:ss') from all_objects; 
    

    12. 获得小时数

    
    SQL> select sysdate ,to_char(sysdate,'hh') from dual;
    SYSDATE TO_CHAR(SYSDATE,'HH') 
    

    ——————– ———————
    2003-10-13 19:35:21 07

    
    SQL> select sysdate ,to_char(sysdate,'hh24') from dual; 
    
    SYSDATE TO_CHAR(SYSDATE,'HH24') 
    

    ——————– ———————–

    2003-10-13 19:35:21 19

    获取年月日与此类似

    13. 年月日的处理

    
    select older_date,
    newer_date,
    years,
    months, 
    
    abs( trunc( newer_date-add_months( older_date,years*12+months ) ) days from ( select trunc(months_between( newer_date, older_date )/12) YEARS, mod(trunc(months_between( newer_date, older_date )), 
    

    12 ) MONTHS,

    
    newer_date,
    older_date
    from ( select hiredate older_date,
    add_months(hiredate,rownum)+rownum newer_date from emp ) ) 
    

    14. 处理月份天数不定的办法

    
    select to_char(add_months(last_day(sysdate) +1, -2), 'yyyymmdd'),last_day(sysdate) from dual 
    

    16. 找出今年的天数

    
    select add_months(trunc(sysdate,'year'), 12) - trunc(sysdate,'year') from dual 
    

    闰年的处理方法

    
    to_char( last_day( to_date('02' | | :year,'mmyyyy') ), 'dd' ) 
    

    如果是28就不是闰年

    17. yyyy与rrrr的区别

    ‘YYYY99 TO_C

    ——- —-

    yyyy 99 0099

    rrrr 99 1999

    yyyy 01 0001

    rrrr 01 2001

    18.不同时区的处理

    
    select to_char( NEW_TIME( sysdate, 'GMT','EST'), 'dd/mm/yyyy hh:mi:ss') ,sysdate
    from dual; 
    

    19. 5秒钟一个间隔

    
    Select TO_DATE(FLOOR(TO_CHAR(sysdate,'SSSSS')/300) * 300,'SSSSS') ,TO_CHAR(sysdate,'SSSSS')
    from dual 
    

    TO_DATE(FL TO_CH

    ———- —–

    2007-01-01 60368

    SSSSS表示5位秒数

    20. 一年的第几天

    
    select TO_CHAR(SYSDATE,'DDD'),sysdate from dual 
    

    TO_ SYSDATE

    — ———-

    017 2007-01-17

    21.计算小时,分,秒,毫秒

    
    select
    Days,
    A,
    TRUNC(A*24) Hours,
    TRUNC(A*24*60 - 60*TRUNC(A*24)) Minutes,
    TRUNC(A*24*60*60 - 60*TRUNC(A*24*60)) Seconds,
    TRUNC(A*24*60*60*100 - 100*TRUNC(A*24*60*60)) mSeconds
    from
    ( select trunc(sysdate) Days, sysdate - trunc(sysdate) A
    from dual
    ) 
    
    select * from tabname
    order by decode(mode,'FIFO',1,-1)*to_char(rq,'yyyymmddhh24miss'); 
    
    // 
    
    floor((date2-date1) /365)      作为年
    floor((date2-date1, 365) /30)  作为月
    mod(mod(date2-date1, 365), 30) 作为日. 
    

    22.next_day函数

    next_day(sysdate,6)是从当前开始下一个星期五.后面的数字是从星期日开始算起.

    1 2 3 4 5 6 7

    日 一 二 三 四 五 六

    —————————————————————

    
    select (sysdate-to_date('2003-12-03 12:55:45','yyyy-mm-dd hh24:mi:ss'))*24*60*60 from dual 
    

    日期 返回的是天 然后 转换为ss

    27 十, 2009

    sql语句中日期时间格式化查询

    Posted by: kinglife In: SQL Server

    在日常做日期处理查询的时候,我发现以前的搜索时间方式不太科学,效率也不是太高.由其是在查询指定的时间相等的时候,我在数据库中都存这样的时间格式”2009-10-27 14:32:12″当我们在查询2009-10-27是否与它相等,结果是不相等的.

    所我们都喜欢找其它途径来解决这个问题。但是我发现我们的方法都不是太好,因为我们有的时候对sql sever的语句特性还了解的不够彻底。所以我查询了查sql server有帮助,终于发现个好东西,可以解决这个问题.

    CONVERT 函数,可以解决这个问题,能将2007-5-22 14:32:12这样的时间在查询或where 子句中格式化为:2007-5-22;

    如下:

    我将查询用户的注册时间 UserRegisterTime

    
    select * from [user] where UserActive=0 and replace(CONVERT(char(10),UserRegisterTime,111),'/','-')='2007-05-22' order by UserRegisterTime desc
    

    在这其中关键的一句

    
    replace(CONVERT(char(10),UserRegisterTime,111),'/','-');
    

    为什么我要replace将convert中的”/”符,换成”-”呢.是因为convert在这里格式化出来的时间是:2007/05/22

    还要特别说明一点:convert格式化出为的时间都是带有前有0的格式,比如2007-1-1 12:12:31结果为:

    2007-01-01,所以你在查询前务必要将你的日期中的月和日中小于10(不包括10)的数字加上前导0,

    如:1就应该为01

    此涵数的具体用法如下:

    转换函数

    当 Microsoft® SQL Server? 2000 不自动执行不同数据类型的表达式转换时,可使用转换函数 CAST 和 CONVERT 进行转换。这些转换函数还可用来获得各种特殊的数据格式。这两个转换函数都可用于选择列表、Where 子句和允许使用表达式的任何地方。

    如果希望 Transact-SQL 程序代码遵从 SQL-92 标准,请使用 CAST 而不要使用 CONVERT。如果要利用 CONVERT 中的样式功能,请使用 CONVERT 而不要使用 CAST。

    使用 CAST 或 CONVERT 时,需要两条信息:

    要转换的表达式(例如,销售报告要求销售数据从货币型数据转换为字符型数据)。

    要将所给表达式转换到的数据类型,例如,varchar 或 SQL Server 提供的任何其它数据类型。

    除非将被转换的值存储起来,否则转换仅在 CAST 或 CONVERT 函数的作用期内有效。

    在下面的示例中,第一个 Select 语句中使用 CAST,第二个 Select 语句中使用 CONVERT,将 title 列转换为 char(50) 列,以使结果更可读:

    
    USE pubs
    
    Select CAST(title AS char(50)), ytd_sales
    FROM titles
    Where type = 'trad_cook'
    

    
    USE pubs
    
    Select CONVERT(char(50), title), ytd_sales
    FROM titles
    Where type = 'trad_cook'
    

    下面是结果集:(对任何一个查询)

    ytd_sales

    —————————————– ———–

    Onions, Leeks, and Garlic: Cooking Secrets of the 375

    Fifty Years in Buckingham Palace Kitchens 15096

    Sushi, Anyone? 4095

    (3 row(s) affected)

    在下面的示例中,int 类型的ytd_sales 列转换为 char(20) 列,从而可以对该列使用 LIKE 谓词:

    
    USE pubs
    Select title, ytd_sales
    FROM titles
    Where CAST(ytd_sales AS char(20)) LIKE '15%'
    AND type = 'trad_cook'
    

    下面是结果集:

    Title ytd_sales

    —————————————– ———

    Fifty Years in Buckingham Palace Kitchens 15096

    (1 row(s) affected)

    SQL Server 自动处理某些数据类型的转换。例如,如果比较 char 和 datetime 表达式、smallint 和 int 表达式、或不同长度的 char 表达式,SQL Server 可将它们自动转换。这种转换称为隐性转换。对这些转换不必使用 CAST 函数。但是,在下列情况下使用 CAST 都是可以接受的:

    两个表达式的数据类型完全相同。

    两个表达式可隐性转换。

    必须显式转换数据类型。

    如果试图进行不可能的转换(例如,将含有字母的 char 表达式转换为 int 类型),SQL Server 将显示一条错误信息。

    如果转换时没有指定数据类型的长度,则 SQL Server 自动提供长度为 30。

    转换为 datetime 或 smalldatetime 时,SQL Server 将拒绝所有无法识别为日期的值(包括 1753 年 1 月 1 日以前的日期)。当日期处于适当的范围内(1900 年 1 月 1 日到 2079 年 6 月 6 日)时,可将 datetime 值转换为 smalldatetime。时间值被四舍五入为最接近的分钟数。

    转换为 bit 将把任何非零值都更改为 1。

    转换为 money 或 smallmoney 时,整数后将加上货币单位。例如,整数值 4 被转换为货币时相当于 4 美元(对于默认语言 us_english)。浮点值的小数部分将四舍五入为四位小数以用于 money 值。将要转换为整数数据类型的 char 或 varchar 数据类型的表达式中,只能包含数字和可选的加号或减号(+ 或 -)。将忽略前导空格。要转换为 money 的 char 或 varchar 数据类型的表达式,还可包含可选的小数点和前导美元符号 ($)。

    要转换为 float 或 real 数据类型的 char 或 varchar 类型表达式还可选择性地包含指数符号(e 或 E,后面有可选的 + 或 – 符号,再后面是数字)。

    将字符表达式转换为其它大小的数据类型时,对于新的数据类型过长的值将被截断,SQL Server 将在 osql 实用工具和 SQL 查询分析器中显示星号 (*)。若数字表达式对于新的数据类型太长而无法显示,值将截断。下面是字符截断的示例:

    
    USE pubs
    Select SUBSTRING(title, 1, 25) AS Title, CONVERT(char(2), ytd_sales)
    FROM titles
    Where type = 'trad_cook'
    

    下面是结果集:

    Title

    ————————- –

    Onions, Leeks, and Garlic *

    Fifty Years in Buckingham *

    Sushi, Anyone? *

    (3 row(s) affected)

    在进行数据类型转换时,若目标数据类型的小数位数小于源数据类型的小数位数,则该值将被截断。例如,CAST(10.3496 AS money) 的结果是 $10.35。

    可将 text 数据显式转换为 char 或 varchar,将 image 显式转换为 binary 或 varbinary。由于这些数据类型被限制为 8,000 个字符,所以转换也限制为 character 和 binary 数据类型的最大长度,即 8,000 个字符。可将 ntext 数据显式转换为 nchar 或 nvarchar,但最大长度为 4,000 个字符。如果没有指定长度,被转换的值的默认长度为 30 个字符。不支持隐式转换。

    style 参数

    将 datetime 数据转换为 char 或 varchar 数据时,CONVERT 的 style 参数提供了各种日期显示格式。为 style 参数提供的数值确定了 datetime 数据的显示方式。年份可以显示为两位或四位数。默认情况下,SQL Server 将年份显示为两位数。若要显示包括世纪的四位数年份 (yyyy)(即使年份数据是使用两位数的年份格式存储的),请给 style 值加 100 以获得四位数年份。

     Convert的使用方法:

      格式:

    
    Convert(data_type,expression[,style])
    

      说明:此样式一般在时间类型(datetime,smalldatetime)与字符串类型(nchar,nvarchar,char,varchar)相互转换的时候才用到.

      例子:

    
    Select Convert(varchar(30),getdate(),101) now
    

      结果为

      now

      09/15/2001

      style数字在转换时间时的含义如下:

    Style(2位表示年份) Style(4位表示年份) 输入输出格式
    0 100 mon dd yyyy hh:miAM(或PM)
    1    101 mm/dd/yy
    2 102 yymmdd
    3 103 dd/mm/yy
    4 104 ddmmyy
    5 105 ddmmyy
    6 106 dd mon yy
    7 107 mon dd,yy
    8 108 hh:mm:ss
    9 109 mon dd yyyy hh:mi:ss:mmmmAM(或PM)
    10 110 mmddyy
    11 111 yy/mm/dd
    12 112 yymmdd
    13 113 dd mon yyyy hh:mi:ss:mmm(24小时制)
    14 114 hh:mi:ss:mmm(24小时制)
    20 120 yyyymmdd hh:mi:ss(24小时制)
    21 121 yyyymmdd hh:mi:ss:mmm(24小时制)

    以下示例显示用 style 参数进行转换:

    Select CONVERT(char(12), GETDATE(), 3)

    此语句把当前日期转换为样式 3,dd/mm/yy。

    在这里我附上一些实例:

    
    select CONVERT(varchar, getdate(), 120 )
    
    2004-09-12 11:06:08
    
    select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
    
    20040912110608
    
    select CONVERT(varchar(12) , getdate(), 111 )
    
    2004/09/12
    
    select CONVERT(varchar(12) , getdate(), 112 )
    
    20040912
    
    select CONVERT(varchar(12) , getdate(), 102 )
    
    2004.09.12
    
    select CONVERT(varchar(12) , getdate(), 101 )
    
    09/12/2004
    
    select CONVERT(varchar(12) , getdate(), 103 )
    
    12/09/2004
    
    select CONVERT(varchar(12) , getdate(), 104 )
    
    12.09.2004
    
    select CONVERT(varchar(12) , getdate(), 105 )
    
    12-09-2004
    
    select CONVERT(varchar(12) , getdate(), 106 )
    
    12 09 2004
    
    select CONVERT(varchar(12) , getdate(), 107 )
    
    09 12, 2004
    
    select CONVERT(varchar(12) , getdate(), 108 )
    
    11:06:08
    
    select CONVERT(varchar(12) , getdate(), 109 )
    
    09 12 2004 1
    
    select CONVERT(varchar(12) , getdate(), 110 )
    
    09-12-2004
    
    select CONVERT(varchar(12) , getdate(), 113 )
    
    12 09 2004 1
    
    select CONVERT(varchar(12) , getdate(), 114 )
    
    11:06:08.177
    

    14 十, 2009

    德语小记

    Posted by: kinglife In: Diary

     

    谷歌是个很好的老师

    第一步从谷歌出发吧

    谷歌的德国站

    http://www.google.com/webhp?hl=de

     

    第二步

    德语版的谷歌语言工具

    http://www.google.com/language_tools?hl=de

    很强悍的语言工具,可以翻译单词/词组 虽然翻译的不是很完美但是基本能明白大意了.

    除了单词/句子翻译功能之外,她还可以翻译网页.

     

    注意:在德语版的谷歌中你看到的所有商标除外的所有文字都是德语(譬如Google这类商品型的品牌全球都是这么写的),请勿跟英文混淆.在德语中,”德国/德文“的写法是  “Deutsch” , 这是德国的国家域名为什么是 “.de”  的原因.

     

    中文(简体)” 的写法是 Chinesisch(traditionell)

     

    先写两点吧,做个小标记!

     

    OH NO,忘记补充了怎么到德语版的谷歌中去的了,需要修改下谷歌默认语言,首先打开谷歌的国际版www.google.com 然后右上角可以看到 Search settings  ,点击进入设置 在” Interface Language ” 这项中设置成相应的语言,英文的很方便吧,直接下拉选择成 “Garman” 就OK了,其它的就不用设置了,最后别忘记点右上角的”Save Preferences“按钮来保存设置.如果不这样设置 下次打开它还是你之前的默认语言的.
    最后补充说明下: 最好安装两个种类不一样的浏览器,我用的分别是IE7和FireFox,IE7给我日常使用,就是中文环境下,FireFox完全上别的语言的站点.谷歌搜索设置中可以设置你需要的检索结果站点的语言.