求一关于datetime时间类型比较的解题思路???

qingYun1029 2011-02-10 02:49:20
数据库里面有两个字段,OPEN_FROM(门店开始营业时间),OPEN_TO(门店结束营业时间),都是datetime类型(ORACLE数据库)

我在前台能够获取到用户选取的小时和分钟,需要比较用户选取的时间是否在当天的营业时间里面。。

如果不在返回该店的营业时间。即OPEN_FROM和OPEN_TO的hh24-mi-ss部分。。。

请问该怎么做好???
有没有办法用sql语句做到???

求解!!!

谢谢!!!
...全文
229 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
加油馒头 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 qingyun1029 的回复:]
数据库里面有两个字段,OPEN_FROM(门店开始营业时间),OPEN_TO(门店结束营业时间),都是datetime类型(ORACLE数据库)

我在前台能够获取到用户选取的小时和分钟,需要比较用户选取的时间是否在当天的营业时间里面。。

如果不在返回该店的营业时间。即OPEN_FROM和OPEN_TO的hh24-mi-ss部分。。。

请问该怎么做好???
有没有办法用sql语句……
[/Quote]
OPEN_FROM 这两个字段看做总的分钟数

WHERE youtime BETWEEN OPEN_FROM>ww AND OPEN_TO<ww --ww:用户选取的时间 的总分钟数

在这之间 就对了,具体这么得出总分钟数 不要我说了吧?

qingYun1029 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]

private string DateDiff(DateTime DateTime1, DateTime DateTime2)
{
string dateDiff = null;

TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
T……
[/Quote]

我晕,一个文字都没有。。。

就算获取到两个时间之间相隔多少天、多少小时、多少分钟有什么用呢???

怎么判断获取到的时间是否这这个时间里面???
qingYun1029 2011-02-11
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 vrhero 的回复:]

时间值在.NET中有专门的类型TimeSpan...你可以根据你需要的精度在整型数和TimeSpan之间很容易地转换,而TimeSpan又可以很容易地与DateTime做各种运算...

就算是在数据库里用SQL处理,用整型数处理也容易地多...记住,做老大的说的未必就对...
[/Quote]

问题解决了。。

主要用到了DateTime和TimeSpan类型之间的转换,以及TimeSpan函数的CompareTo()函数。。

还有就是DateTime类型的ToString()函数格式化返回的时间就基本上弄好了。。

//门店开始营业时间必须小于或者等于用户取车时间,并且
//门店结束营业时间必须大于或者等于用户取车时间
if (tsStar.CompareTo(tsTakeCarTime) < 1 && tsEnd.CompareTo(tsTakeCarTime) > -1)
{
Response.Write("true");
}
else
{
//用户选取时间没有在对应网点营业时间内,返回门店营业时间,并提示。
Response.Write("false_" + new DateTime(tsStar.Ticks).ToString("HH:mm") + "-" + new DateTime(tsEnd.Ticks).ToString("HH:mm"));
}


qingYun1029 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 vrhero 的回复:]

时间值在.NET中有专门的类型TimeSpan...你可以根据你需要的精度在整型数和TimeSpan之间很容易地转换,而TimeSpan又可以很容易地与DateTime做各种运算...

就算是在数据库里用SQL处理,用整型数处理也容易地多...记住,做老大的说的未必就对...
[/Quote]

我上面说的营业时间段需要两个字段对吗???

额 ~~~
做老大的不一定正确!!!
vrhero 2011-02-10
  • 打赏
  • 举报
回复
时间值在.NET中有专门的类型TimeSpan...你可以根据你需要的精度在整型数和TimeSpan之间很容易地转换,而TimeSpan又可以很容易地与DateTime做各种运算...

就算是在数据库里用SQL处理,用整型数处理也容易地多...记住,做老大的说的未必就对...
qingYun1029 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qingyun1029 的回复:]

引用 9 楼 vrhero 的回复:

你这两个字段的设计就有问题,既然只是时间值何必用datetime类型...

只需要一个int存由午夜0时开始的秒数即可...既省空间又容易处理...


数据库是老大设计的。。。

怎么做,应该还是要两个字段吧,一个是营业开始时间,一个是营业结束时间
比如说8点整表示为8*3600即28800(营业开始时间)
到下午20点整表示为2……
[/Quote]

最后一行漏删了。。
qingYun1029 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 vrhero 的回复:]

你这两个字段的设计就有问题,既然只是时间值何必用datetime类型...

只需要一个int存由午夜0时开始的秒数即可...既省空间又容易处理...
[/Quote]

数据库是老大设计的。。。

怎么做,应该还是要两个字段吧,一个是营业开始时间,一个是营业结束时间
比如说8点整表示为8*3600即28800(营业开始时间)
到下午20点整表示为20*3600即72000(营业结束时间)

这样虽然好比较,但是返回提示信息的时候还是需要比较麻烦的处理。。

你的意思是0-24小时都用秒表示吗,例如,一天二十四小时营业时间表示为0——24*3600即
哈利波特2013 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qingyun1029 的回复:]
是啊,但是这样也很麻烦啊,,
因为如果不在营业时间中,我需要返回这个营业时间段,给用户提示该时间段。。

提示的格式为08:00——20:00,从客户端获取……
[/Quote]
我只能说楼主想的太复杂了,这个很简单的逻辑。
vrhero 2011-02-10
  • 打赏
  • 举报
回复
你这两个字段的设计就有问题,既然只是时间值何必用datetime类型...

只需要一个int存由午夜0时开始的秒数即可...既省空间又容易处理...
qingYun1029 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 qwb2009 的回复:]

如果楼主硬是要用这种格式判断的话,你就分开来判断,把小时和分钟分别判断,如果在小时中,分钟就不需要判断了一定符合,如果有一个与规定时间重复,那么就判断分钟是否小于或大于指定的时间。
[/Quote]

是啊,但是这样也很麻烦啊,,
因为如果不在营业时间中,我需要返回这个营业时间段,给用户提示该时间段。。

提示的格式为08:00——20:00,从客户端获取,再比较时,已经转型了。。00的字符串变成了0,这样与提示信息要求又不符合了。。
哈利波特2013 2011-02-10
  • 打赏
  • 举报
回复
如果楼主硬是要用这种格式判断的话,你就分开来判断,把小时和分钟分别判断,如果在小时中,分钟就不需要判断了一定符合,如果有一个与规定时间重复,那么就判断分钟是否小于或大于指定的时间。
qingYun1029 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyq11 的回复:]

private string DateDiff(DateTime DateTime1, DateTime DateTime2)
{
string dateDiff = null;

TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
T……
[/Quote]

关键是这两个datetime类型的参数不好弄啊。。
我只能获取用户选择的小时和分钟,而new Datetime类型需要比两个参数多的实参。。
哈利波特2013 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 qingyun1029 的回复:]
不是,只要判断用户的小时和分钟就好了。。
判断小时分钟是……
[/Quote]
同理,可以实现
qingYun1029 2011-02-10
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qwb2009 的回复:]

判断时间,选取的时间就像这样吗?2011-2-10 14:55:55?如果只是要判断这个时间是不是在OPEN_FROM和OPEN_TO之中,只需要在SQL语句的条件里加上WHERE youtime BETWEEN OPEN_FROM AND OPEN_TO
不就行了,是不是这样呢?
[/Quote]

不是,只要判断用户的小时和分钟就好了。。
判断小时分钟是不是在这两个字段里面(营业时间)
营业时间都是08:30——20-30这种格式,当然是这两个字段的hh24-mi部分啦!
wuyq11 2011-02-10
  • 打赏
  • 举报
回复
private string DateDiff(DateTime DateTime1, DateTime DateTime2)
{
string dateDiff = null;

TimeSpan ts1 = new TimeSpan(DateTime1.Ticks);
TimeSpan ts2 = new TimeSpan(DateTime2.Ticks);
TimeSpan ts = ts1.Subtract(ts2).Duration();
dateDiff = ts.Days.ToString()+"天"
+ ts.Hours.ToString()+"小时"
+ ts.Minutes.ToString()+"分钟"
+ ts.Seconds.ToString()+"秒";

return dateDiff;
}

wuyq11 2011-02-10
  • 打赏
  • 举报
回复
sql datediff
c# TimeSppan ts=dt1-dt;
或DateTime.Comparse
哈利波特2013 2011-02-10
  • 打赏
  • 举报
回复
判断时间,选取的时间就像这样吗?2011-2-10 14:55:55?如果只是要判断这个时间是不是在OPEN_FROM和OPEN_TO之中,只需要在SQL语句的条件里加上WHERE youtime BETWEEN OPEN_FROM AND OPEN_TO
不就行了,是不是这样呢?

62,236

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧