到站时间 、发车时间 
                     null     4:20
                     5:00      5:10
                     5:50      6:00
                     6:30      6:35
                     7:10      null
到站时间 为null就是 起点站 这样就省了一点判断,发车时间 同理

解决方案 »

  1.   

    如:select convert(char(5),getdate(),108)
      

  2.   

    大力哥,select convert(char(5),getdate(),108)
    具体社么意思啊,有没有这方面的简明教程,我数据库知识还在温饱线下用null 确实方便
    可用完之后对数据类型转换方面的知识也没社么长进啊
    大力哥,麻烦讲几条典型的转换语句好吗?谢谢了先
      

  3.   

    你到查询分析器里执行:select convert(char(5),getdate(),108)  --得出的结果是:06:05 是你想要的select CONVERT(varchar(10), getDate(),120) --不要时间2002-1-1
    select convert(char(8),getdate(),112) ----20020101
    select convert(char(8),getdate(),108)  ---06:05:05
      

  4.   

    select getdate() --得到当前时间
      

  5.   

    对null可以:select isnull(null,'替代null值')这样可以用来判断null
      

  6.   

    select convert(char(5),getdate(),108)
    得到的是系统时间啊,请问怎么弄才得到想要的列上的时间转换呢
      

  7.   

    我将其中的getdate(),试了好几次,想对指定列取数,可是失败了
    具体怎么指定,我没用过,麻烦了老大!
      

  8.   

    如果你是用datetime存储你的时间,其他的你可以不用去管它
    你在显示的时候:select isnull(convert(char(5),到站时间,108),'起点站'),isnull(convert(char(5),发车时间,108),'终点站') from 表
      

  9.   

    老大真及时啊,我正在看连机帮助,想办法解决呢,原来那些函数用法真的很好玩
    谢谢了,有问题再Message 你哈
      

  10.   

    大力哥:看到Message 了没!
      

  11.   

    UPDATE message
        SET 到站时刻= NULL
        WHERE  到站时刻='00:00'
    为社么我这样修改不了呢,语法没错啊
      

  12.   

    建议,改成int型                   到站时间 、发车时间 
                        起点站     4:20
                         5:00      5:10
                         5:50      6:00
                         6:30      6:35
                         7:10      终点站---〉                   到站时间 、发车时间 
                        -1         260
                         300       310
                         350       360
                         390       395
                         430       -1好处,加减方便,速度快查询:select case when 到站时间=-1 then '起点站' 
    else convert(varchar(10),到站时间/60)+':'+right('0'+convert(varchar(10),到站时间%60),2)
    end as 到站时间,
    case when 发车时间=-1 then '终点站' 
    else convert(varchar(10),发车时间/60)+':'+right('0'+convert(varchar(10),发车时间%60),2)
    end as 发车时间,注意:
    超过一小时会有问题
      

  13.   

    解决小时问题select case when 到站时间=-1 then '起点站' 
    when 到站时间>=3600 then convert(varchar(10),到站时间/3600)+':'+right('0'+convert(varchar(10),(到站时间%3600)/60),2)+':'+right('0'+convert(varchar(10),到站时间%60),2) 
    else convert(varchar(10),到站时间/60)+':'+right('0'+convert(varchar(10),到站时间%60),2)
    end as 到站时间,
    case when 发车时间=-1 then '终点站' 
    when 发车时间>=3600 then convert(varchar(10),发车时间/3600)+':'+right('0'+convert(varchar(10),(发车时间%3600)/60),2)+':'+right('0'+convert(varchar(10),发车时间%60),2) 
    else convert(varchar(10),发车时间/60)+':'+right('0'+convert(varchar(10),发车时间%60),2)
    end as 发车时间,
    发车时间-到站时间 as 停留秒数
    from tablename 
      

  14.   

    哇,这也能想到啊,像汇编,强!
    我一定试试,昨晚原本想通宵的,可惜学校为配合“非典”已经灯火管制了
    郁闷啊,一晚没睡着:)刚建表时对SQL语言的无知,导致表结构上的问题还不合理如:车次ID(int)  车次(char)      到站时刻(datatime) 发车时刻(char) 里程  硬坐票价
      2, 1354/1351次(成都-->上海)普快  ,18:50,       第三日10:42,  2351,   126原因是当时只考虑用户输入车次模糊查询,对车次、发车时刻用char型是因为这些是固定不变的省了字段合并工作,我当时还不知道有那个功能:)但现在来看很不合理了,因为在 按任意站次查询的时候,车次ID、 车次 还是不变,但到站时刻、发车时刻、里程、 硬坐票价是要变的。如:1354/1351次(成都-->上海)普快 如果成都-->上海, 其它信息不变
    但如果是 从绵阳上的车,那么 到站时刻、发车时刻、里程、 硬坐票价是都要变了当然 后者还是可以将那些变动信息重新绑定显示的,这就涉及SQL的选择问题(我还在试)。
    还有就是在想有没有必要将 车次查询 中的 到站时刻(datatime) 发车时刻(char) 里程  硬坐票价 等通过以下车次详情表来得到:车次ID 站次 经由站 到站时刻 发车时刻 公里数 天数
       2    1   成都     ,NULL      ,18:5  ,0     0
       2    2   广汉     ,19:34     ,19:39 ,38    0
       2    3   德阳     ,19:59     ,20:03 ,61    0
       2    4   绵阳     ,20:48     ,20:58 ,115   0 
       2    5   江油     ,21:34     ,21:43 ,157   0
       2    6   昭化     ,00:02     ,00:08 ,298   1
       2    8   广元     ,00:45     ,00:57 ,319   1
       .
       .
       .还有张票价表,结构也弄好了,包括 软硬座 卧铺(上中下) 卧铺(上下)
    因为不知道价格和其它参素的必然联系,所以只能建表,现在可以暂时不考虑给出以上内容,是因为自己技术上还很不全面,一定会有很多不妥的地方,想请各位大哥看看
    哪些地方可以改进,希望能找到一种比较合理的方案的确太长了:)
      

  15.   

    最好
    到站时刻(datatime null) 发车时刻(datatime null)
     
    车次ID 站次 经由站 到站时刻 发车时刻 公里数 天数
       2    1   成都     ,NULL      ,1900-1-1 18:5  ,0     0
       2    2   广汉     ,1900-1-1 19:34     ,1900-1-1 19:39 ,38    0
       2    3   德阳     ,1900-1-1 19:59     ,1900-1-1 20:03 ,61    0
       2    4   绵阳     ,1900-1-1 20:48     ,1900-1-1 20:58 ,115   0 
       2    5   江油     ,1900-1-1 21:34     ,1900-1-1 21:43 ,157   0
       2    6   昭化     ,1900-1-2 00:02     ,1900-1-2 00:08 ,298   1
       2    7   广元     ,1900-1-2 00:45     ,1900-1-2 00:57 ,319   1
    ...
       2    X   上海     ,1900-1-3 10:42     ,null ,319   1这样,停靠时间可以用datediff(minute,到站时刻,发车时刻)计算
    第几天到也是能计算的
      

  16.   

    我现在已经实现了通过 给定 起始站和终点站 来找到相应符合条件的车次了(只能显示那张静态的车次信息),当然通过车次来查已经没问题了,现在就是要考虑如何将 动态的信息放到的DataGrid显示出来。
        我是在vs.c#下用的sqlDataAdapter控件,配置好后它自动生成了SqlConnection,再根据向导生成的dataset,最后加上了DataGrid,并用向导生成样式,效率很高,但自动生成了些东西,虽然代码不难,但象我这种第一次用VS的菜鸟来说觉得不够灵活。有两个问题不明白:1、在以上情况下,怎样才能将车次详情表提取的信息绑定到以原来的那个DataGrid上
    2、用select isnull(convert(char(5),到站时间,108),'起点站'),isnull(convert(char(5),发车时间,108),'终点站') from 表 只能找到两列,这条语句要怎么样做才能和其它的一起提取出来。
      

  17.   

    用select isnull(convert(char(5),到站时间,108),'起点站'),isnull(convert(char(5),发车时间,108),'终点站'),其他列呀 from 表 只能找到两列,这条语句要怎么样做才能和其它的一起提取出来。