1、SQL server好像没有单独的日期和时间类型,只有datetime这种2者都包含的类型,是吗?2、datetime类型可以单独存放日期,但是不能单独存放时间,我一存时间,数据库自动在时间前面添加日期“1900-1-1”,怎么办?3、我在datetime类型存放了日期和时间,可是当我要取出整个日期该怎么办?我用dateName函数只能单独取年或月或日这种数据,能取整个日期吗?4、我在datetime类型存放了日期和时间,我想于一个日期类型,譬如“1900-1-1”用LIKE匹配,始终不行,只能和“1900”匹配,加了“-”好像都不行,就算我把datetime里的类型转换为字符类型都不行,怎么回事啊?(最重要)

解决方案 »

  1.   

    取出整个日期,可以把datetime转换成字符串,然后再去掉时间部分是数字,当然没法用LIKE匹配了,但可以用比较的(< > >= <=)
      

  2.   

    1、SQL server好像没有单独的日期和时间类型,只有datetime这种2者都包含的类型,是吗?是
    2、datetime类型可以单独存放日期,但是不能单独存放时间,我一存时间,数据库自动在时间前面添加日期“1900-1-1”,怎么办?不管时间还是日期,都可以存放,但都是存储为日期+时间的格式
    你可以在读取时,指定读取日期还是时间部分
    例:
    select 日期=convert(char(10),日期字段,120),时间=convert(varchar,日期字段,108)3、我在datetime类型存放了日期和时间,可是当我要取出整个日期该怎么办?我用dateName函数只能单独取年或月或日这种数据,能取整个日期吗?取日期和时间在第2点已经回答
      

  3.   

    4、我在datetime类型存放了日期和时间,我想于一个日期类型,譬如“1900-1-1”用LIKE匹配,始终不行,只能和“1900”匹配,加了“-”好像都不行,就算我把datetime里的类型转换为字符类型都不行,怎么回事啊?(最重要)--进行日期时间的比较一般用datediff--比较两个日期是否相同,精确到年月
    where datediff(month,日期1,日期2)=0--比较两个日期是否相同,精确到年月日
    where datediff(day,日期1,日期2)=0--比较两个日期是否相同,精确到年月日时分
    where datediff(minute,日期1,日期2)=0
      

  4.   

    SQL中进行日期处理经常用到的几个函数,详细的用法参考SQL联机帮助:1.convert,将日期转换成指定格式的字符串
    2.datediff,比较两个日期的差
    3.datepart,取日期的指定部分
      

  5.   

    谢谢zjcxc(: 邹建 :)大虾的回答。
    但是我想的是在条件里面把存在datetime里面的日期取出来,跟我的变量日期类型比较,譬如我想取出datetime里日期为“2004-4-1”的所有记录取出来
    SELECT *
    FROM Make_Fei
    WHERE (Write_Date LIKE '%2004-4-1%"')
    这样不行
    只能 
    SELECT *
    FROM Make_Fei
    WHERE (Write_Date <= '2004-4-2 23:59:59') AND (Write_Date >= '2004-4-2 0:0:0')想取出2004年4月的所有记录,该怎么样写呢?取出2004年的所有记录,倒是可以
    SELECT *
    FROM Make_Fei
    WHERE (Write_Date LIKE '%2004%')