首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • sql 日期的查询 [已结贴,结贴人:Txxiaoqiang]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Txxiaoqiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 揭贴率:
    发表于:2008-08-20 13:47:31 楼主
    数据库中字段名是SignedDate,存储的日期格式是“2008-1-23 0:00:00”
    怎么才能在写sql语句查询的时候,按月(2008-1)来查询?
    数据库是 SQL。
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • areswang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 13:51:041楼 得分:0
    SELECT * FROM TABLE WHERE CONVERT(VARCHAR(7),SignedDate,120)='2008-01'
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Txxiaoqiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 14:47:002楼 得分:0
    要是一个范围呢?比如说是上半年、下半年或是几月到几月?应该怎么写?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kelph
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 14:49:013楼 得分:2
    between 起始 and 结束
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Txxiaoqiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 14:51:464楼 得分:0
    我知道用between and 。麻烦你写详细点?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhanminga
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:17:085楼 得分:2
    SQL code
    select * from rm.HRM_EMP_INFO where to_char(ente_appe_date,'yyyy-mm-dd')>='2008-07-01' and to_char(ente_appe_date,'yyyy-mm-dd')<'2008-08-01'
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • areswang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 15:31:256楼 得分:2
    引用 5 楼 zhanminga 的回复:
    SQL code
    select * from rm.HRM_EMP_INFO
    where to_char(ente_appe_date,'yyyy-mm-dd')>='2008-07-01'
    and to_char(ente_appe_date,'yyyy-mm-dd') <'2008-08-01'

    ------------
    oracle?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fhtcgym
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-20 21:54:227楼 得分:0
    2楼已正确回答,半年或几月(between '2008-01' and '2008-06')
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bobland
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 05:45:088楼 得分:10
    select Year('2008-1-23 0:00:00'),Month('2008-1-23 0:00:00')
    可以自己随意组合
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mugua604
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 08:20:419楼 得分:2
    在函数CONVERT()中你可以使用许多种不同风格的日期和时间格式。表11.1显示了所有的格式。

    表11.1  日期和时间的类型
    类型值            标准            输出
      0                Default          mon dd yyyy hh:miAM
      1                USA              mm/dd/yy
      2                ANSI              yy.mm.dd
      3                British/French    dd/mm/yy
      4                German            dd.mm.yy
      5                Italian          dd-mm-yy
      6                -                dd mon yy
      7                -                mon dd,yy
      8                -                hh:mi:ss
    9                     Default + milliseconds--mon dd yyyy
    hh:mi:ss:mmmAM(or )
      10                USA              mm-dd-yy
      11                JAPAN            yy/mm/dd
      12                ISO              yymmdd
      13                Europe          Default + milliseconds--dd mon yyyy
                                          hh:mi:ss:mmm(24h)
      14                -                hh:mi:ss:mmm(24h)

      类型0,9,和13总是返回四位的年。对其它类型,要显示世纪,把style值加上100。类型13和14返回24小时时钟的时间。类型0,7,和13返回的月份用三位字符表示(用Nov代表November).

    对表11.1中所列的每一种格式,你可以把类型值加上100来显示有世纪的年(例如,00年将显示为2000年)。例如,要按日本标准显示日期,包括世纪,你应使用如下的语句:

    SELECT CONVERT(VARCHAR(30),GETDATE(),111)

        在这个例子中,函数CONVERT()把日期格式进行转换,显示为1997/11/30
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • only_endure
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 08:32:3210楼 得分:2
    SQL code
    ...where CONVERT(VARCHAR(7),SignedDate,120) between "2008-01" and "2008-12";
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Txxiaoqiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:02:4511楼 得分:0
    引用 10 楼 only_endure 的回复:
    SQL code...where CONVERT(VARCHAR(7),SignedDate,120) between "2008-01" and "2008-12";


    这种方法不行啊,查不出结果来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Txxiaoqiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:12:5612楼 得分:0
    select * from BizMgt_Contract where
    (Year(SignedDate)=year('2008-6-1 0:00:00') and Month(SignedDate)=month('2008-6-30 0:00:00'))

    使用了这种方法,可以查出结果。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Txxiaoqiang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-21 11:21:3513楼 得分:0
    引用 11 楼 Txxiaoqiang 的回复:
    引用 10 楼 only_endure 的回复:
    SQL code...where CONVERT(VARCHAR(7),SignedDate,120) between "2008-01" and "2008-12";


    这种方法不行啊,查不出结果来


    不好意思,刚才“2008-01”前没加“0”,所以查不出结果来。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved