sql server日期时间转字符串

一、sql server日期时间函数
Sql Server中的日期与时间函数 
1.  当前系统日期、时间 
    
select getdate()  

2dateadd  在向指定日期加上一段时间的基础上,返回新的 datetime 值
   例如:向日期加上2天 
   
select dateadd(day,2,2004-10-15)  返回:2004-10-17 00:00:00.000 

3datediff 返回跨两个指定日期的日期和时间边界数。
   
select datediff(day,2004-09-01,2004-09-18)   返回:17

4datepart 返回代表指定日期的指定日期部分的整数。
  
select DATEPART(month2004-10-15)  返回 10

5datename 返回代表指定日期的指定日期部分的字符串
   
select datename(weekday, 2004-10-15)  返回:星期五

6day(), 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)

二、日期格式转换

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

 

函数 参数/功能
GetDate( ) 返回系统目前的日期与时间
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期
DatePart (interval,date) 返回日期date中,interval指定部分所对应的整数值
DateName (interval,date) 返回日期date中,interval指定部分所对应的字符串名称

参数 interval的设定值如下:

缩 写(Sql Server) Access 和 ASP 说明
Year Yy yyyy 年 1753 ~ 9999
Quarter Qq 季 1 ~ 4
Month Mm 月1 ~ 12
Day of year Dy y 一年的日数,一年中的第几日 1-366
Day Dd 日,1-31
Weekday Dw w 一周的日数,一周中的第几日 1-7
Week Wk ww 周,一年中的第几周 0 ~ 51
Hour Hh 时0 ~ 23
Minute Mi 分钟0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms 毫秒 0 ~ 999


转自:http://www.cnblogs.com/zhangq723/archive/2011/02/16/1956152.html

枚举与数组的相互转换

//  将枚举名称转换成文字数组
string[] status = Enum.GetNames(typeof(MyEnum.Dict_Status));

// 讲枚举值转换成文字数组
Array array = Enum.GetValues(typeof(MyEnum.Dict_Status));

// 建立一包含枚举值与枚举名称的字典
Dictionary<int, string> status = new Dictionary<int, string>();
foreach (int y in array)  //列出枚举项对应的数字
{
      string name = ((MyEnum.Dict_Status)y).ToString();
      status.Add(y, name);
}

// 访问字典
foreach (var statu in status)
{
     string outstr="value="+statu.Key.ToString()+",Name="+statu.Value;
}

or 让索引失效的情况

首先,or 让索引失效是有条件的,并不是使用or就让索引失效。

or本身无罪。


OR会引起索引失效的说法是这样来的:
如果是这样一个查询
SELECT * FROM TB WHERE A=1 AND B>2 AND C<3 AND D IN (4,5,6)
并且在TB表上有这样一个索引:CREATE INDEX INX_TB_ABCD ON TB (A,B,C,D)
那么这个查询可以用到这个索引
如果同样是这个索引,查询换成
SELECT * FROM TB_ WHERE A=1 OR B>2 OR C<3 OR D IN (4,5,6)
那么这个查询就用不到上面那个索引,因为结果集是几个条件的并集,最多只能在查找A=1的数据时用索引,其它几个条件都需要表扫描,那优化器就会选择直接走一遍表扫描,所以索引就失效了。

那么像第二个查询这样的应该怎么建索引呢,答案就是四个列上各建一个索引,或者只在选择性最高的列上建索引,比如A=1的数据量很少,就在A上建,如果D是4,5,6的数据很少,就在D上建,这样优化器就会选择先走索引查找,再对找出的结果集进行筛选,扫描数就会大幅减少。

回过头来看你上面那个查询,两个条件都在TID上,所以只有TID上有一个索引就OK了,不存在索引失效的问题。

看书不要全信,多想想书上为什么这么说,自己多试试。


以下是引用:http://www.cnblogs.com/hongfei/archive/2012/10/20/2732589.html

索引并不是时时都会生效的,比如以下几种情况,将导致索引失效

  1. 如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)

注意:要想使用or,又想让索引生效,只能将or条件中的每个列都加上索引

2.对于多列索引,不是使用的第一部分,则不会使用索引

3.like查询是以%开头

4.如果列类型是字符串,那一定要在条件中将数据使用引号引用起来,否则不使用索引

5.如果mysql估计使用全表扫描要比使用索引快,则不使用索引

此外,查看索引的使用情况

show status like ‘Handler_read%’;
大家可以注意:
handler_read_key:这个值越高越好,越高表示使用索引查询到的次数
handler_read_rnd_next:这个值越高,说明查询低效

读取属性(Property)中的特性(Attribute)

    //TestParamAttribute 是数据约束特性
    //DBType、DBLenght 是具体的约束
    [AttributeUsage(AttributeTargets.All, AllowMultiple = true)]
    public class TestParamAttribute : Attribute
    {
        private string dBType;

        public string DBType
        {
            get { return dBType; }
            set { dBType = value; }
        }
        private int dBLenght;

        public int DBLenght
        {
            get { return dBLenght; }
            set { dBLenght = value; }
        }
    }

    //为类中的属性定义约束特性
    class Tester
    {
        private int iD;
      
        [TestParam(DBType=”varchar”,DBLenght=4)]
        public int ID
        {
            get { return iD; }
            set { iD = value; }
        }
        private string testName;
       
        [TestParam(DBType=”varchar”,DBLenght=50)]
        public string TestName
        {
            get { return testName; }
            set { testName = value; }
        }
    }

     Tester test = new Tester();
      test.ID = 1;
      test.TestName = “未完待续”;

       //读取对象的 属性、属性的特性、特性的具体约束

       Type t = test.GetType();

        PropertyInfo[] ps = t.GetProperties(); //类的属性列表,对应sql语句的参数(没有指明具体的对象)

        foreach (PropertyInfo p in ps)  //遍历属性列表,可以得到每一个属性
        {
             // label1.Text += “@” + p.Name + “=” + p.GetValue(test, null).ToString() + “,”;//获取指明的对象‘test’的各个属性和值
             //p.GetCustomAttributes(false) 获得每个属性的特性(Attribute)列表
             //遍历特性列表,可以得到每个特性对象
             foreach (object o in p.GetCustomAttributes(false))
             {
                  if (o.GetType().Equals(typeof(TestParamAttribute))) //校验特性是否符合预设特性类型
                  {
                        TestParamAttribute tpa = (TestParamAttribute)o; //将对象强制转化为特性类型
                         //获取指明的对象‘test’的各个属性的特性中各个具体约束的值
                         label1.Text += “@” + p.Name + “(” + tpa.DBType + “,” + tpa.DBLenght + “)” + “=” + p.GetValue(test,null).ToString() + “,”;//p.GetValue(test, null) 函数指定需要获取的对象
                   }
               }
          }

android 开发环境记

    同事给了个2G多的包,里面带有java jdk android sdk  等。装了半天,上网搜了很多方法,都不顶用。

到最好才发现,原理他发过来的东西都是配置好的了。只需要在在系统中配置路劲就OK了。。。

无语。。。。

千辛万苦,终于运行了第一个android应用。

hello,android!

CKEditor3.3.1精简版本

众所周知,CKEditor是一款强大的web编辑器,前身是KFCEditor,经过重写,配置简单,界面美观,几乎完美的web编辑器选择。
但是下载下来之后体积比较大。传FTP时就浪费很多时间。鉴于很多东西都是不必要的,所以为方便使用,这里我自己做了个精简版
精简的内容主要是 1.源码 2.语言包(只保留了英文、简体中文、繁体中文) 3.示例文件、4.只留一个kama皮肤

ckfinder_aspnet是CKEditor用于asp.net web下的独立上传插件。也做了相应的精简
提供给大家下载

进入google code下载 http://code.google.com/p/yunweier/downloads/list
CKEditor3.3.1精简版本 解压后805KB
ckfinder_aspnet_1.4.1.1.精简版.rar 解压后332KB  

windows2003 远程桌面连接“已达最大连接数”的解决办法

都知道默认情况下windows2003允许远程终端连接的数量是2个用户
有时候会出现”已达最大连接数”提示,无法登入远程桌面。
产生此提示的原因是以前使用远程桌面时直接关闭了窗口,而不是“注销”用户,导致远程桌面窗口虽已关闭,但用户使用的资源并未释放,达到系统允许最多连接数限制。
所以最好养成一个习惯用注销退出远程桌面
解决的办法如下:
1. 强制远程连接到服务器
   找一台windows2003的计算机(XP和Win7好像不行)。在“运行”窗口输入“mstsc /v:192.168.1.1 /console”。强制登录到远程服务器。
2.登陆到远程桌面,此时的Id应该是0。
3.运行“cmd”进入控制台:
4.输入query user 命令记录下已登录用户的ID
   会发现 有三个用户的状态正在“运行中” Id分别为 0、1、2 0是当前强行登陆登陆的Id
5.用logoff Id 命令注销已登录用户: logoff 1 和 logoff 2。
  logoff 0将注销当前的强行登陆的用户。

OK,一切正常!!以后最好是不要直接关闭远程桌面的窗口,应该使用注销!