各位大师现遇到一个操作时间的问题.
  
                数据库中我有一个时间的字段.我通过排序取出最近的时间后我要对取出来的这个时间进行向前推 2个小时我要查询出 我取到的时间 到 2个小时前的内容.请问怎么推2小时前的那个  时间呢.
                例如我取到的时间为                  time1= "2010-4-4 15:27:49" 
                我想要的向前推2小时后的时间应该为   time2= "2010-4-4 13:27:49"
                这里我说一点.我们可以不去考虑到秒.只考虑到分就行了.        我最后要取 内容为   string strSql="select XXXX  from test where intime between time1 and time2"           这样一来我就能求到我所需要的数据了.请各位大师帮忙怎么取到  time2的时间呢.我有tiem1的时间.tiem1 向前推2个小时的tiem2的时间怎么求.             急急急急急...

解决方案 »

  1.   

    DateTime dt=DateTime.Now.AddHours(-2);
    dateadd(hour,1,getdate())
    时间差DateDiff
      

  2.   

    直接在SQL语句中使用DATEADD()函数啦
    具体参看:http://msdn.microsoft.com/zh-cn/library/ms186819.aspxDATEADD (Transact-SQL)将指定 number 时间间隔(有符号整数)与指定 date 的指定 datepart 相加后,返回该 date。有关所有 Transact-SQL 日期和时间数据类型及函数的概述,请参阅日期和时间数据类型及函数 (Transact-SQL)。有关日期和时间数据类型及函数共有的信息和示例,请参阅使用日期和时间数据。Transact-SQL 语法约定语法
    --------------------------------------------------------------------------------复制
    DATEADD (datepart , number, date )
    参数
    --------------------------------------------------------------------------------datepart
    是与 integernumber 相加的 date 部分。下表列出了所有有效的 datepart 参数。用户定义的变量等效项是无效的。datepart 缩写  
    year
     yy, yyyy
     
    quarter
     qq, q
     
    month
     mm, m
     
    dayofyear
     dy, y
     
    day
     dd, d
     
    week
     wk, ww
     
    weekday
     dw, w
     
    hour
     hh
     
    minute
     mi, n
     
    second
     ss, s
     
    millisecond
     ms
     
    microsecond
     mcs
     
    nanosecond
     ns
     number
    是一个表达式,可以解析为与 date 的 datepart 相加的 int。用户定义的变量是有效的。如果您指定一个带小数的值,则将小数截去且不进行舍入。date
    是一个表达式,可以解析为 time、date、smalldatetime、datetime、datetime2 或 datetimeoffset 值。date 可以是表达式、列表达式、用户定义的变量或字符串文字。如果表达式是字符串文字,则它必须解析为一个 datetime 值。为避免不确定性,请使用四位数年份。有关两位数年份的信息,请参阅 two digit year cutoff 选项。返回类型
    --------------------------------------------------------------------------------返回数据类型为 date 参数的数据类型,字符串文字除外。字符串文字的返回数据类型为 datetime。如果字符串文字的秒数小数位数超过三位 (.nnn) 或包含时区偏移量部分,将引发错误。
      

  3.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace WindowsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                DateTime dt = DateTime.Now;
                //定义一个时间段,为2个小时
                TimeSpan ts=new TimeSpan(2,0,0);
                //当前时间减去定义的2个小时,就是把时间提前2个小时了,如果是要增加时间调用Add方法
                dt = dt.Subtract(ts);            DateTime dt1;
                string s = "2010-4-4 15:27:49";
                //这个是将字符串转为时间DateTime,再像前面一样减两个小时,如果是要增加时间调用Add方法
                if (DateTime.TryParse(s, out dt1) == true)
                {
                    dt1 = dt1.Subtract(ts);
                }
            }
        }
    }
      

  4.   

    得到前两个小时的时间:
    select dateadd(hour,-2,'98-02-03 10:05:03')