作者m339606 (mize)
看板C_Sharp
标题Re: [问题] WHERE DateTime.now 判断资料表内的时间
时间Tue Nov 20 13:28:29 2012
※ 引述《womamayo (womamayo)》之铭言:
: 各位前辈好
: 小弟目前正在做专题,是关於揪团订餐的
: 现在目前遇到一个问题就是,在已经有人开团後
: 我想要在首页显示有开团的揪团
: 目前的想法是 透过 WHERE 去判断,开团的资料表(group_open)内的closetime
: 栏位(SmallDatetime) > 现在时间(DateTime.Now) 然後有符合的在抓出来
: 逻辑上感觉是可行的,可是我不知道该如何去判断,我有直接下DateTime.Now()
: 但是画面显示是错误的,有去Google搜寻相关资料,也搜寻不到...
: 想请问前辈们能够协助小弟解决这个问题吗? 或是有其他更好的方法吗?
SQL叙述直接下
WHERE (GETDATE() BETWEEN StartDate AND EndDate)
GETDATE() = SQL取系统时间
http://0rz.tw/xRrXJ
BETWEEN = 取区间
http://0rz.tw/ObfQ8
指令解释
今天 在 开始时间 到 结束时间 之间
这样就不用去用DateTime.Now去字串化又要送进去SQL处理
P.s:DateTime.Now.ToString()会取出系统语言格式的时间(包含上下午)
SQL内使用的型态DateTime格式是2012-11-21 00:00:00.000,要做处理才可以相容
P.s:另外要注意c#中的DateTime区间是12点~12点的区间(24小时制),有分界点问题
过了12点才算当天(一些时间区间判断要注意)
范例:11月20号早上8点~11点不属於11月20号~
刚刚用目前工作环境测试一下之後 smalldatetime 这型态格式是
"yyyy-MM\-dd HH-mm-ss"
用Where可以直接用字串查询,允许1分钟的误差
范例:
栏位数值 Time = 2012-11-11 12:00:00
WHERE (Time = '2012-11-11 11:59:29') 查不到
WHERE (Time = '2012-11-11 11:59:30') ok
WHERE (Time = '2012-11-11 12:00:29') ok
WHERE (Time = '2012-11-11 12:00:30') 查不到
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.33.85.47
※ 编辑: m339606 来自: 114.33.85.47 (11/20 13:44)
※ 编辑: m339606 来自: 114.33.85.47 (11/20 13:44)
1F:→ m339606:补上系统环境 ASP.NET 4.0 + VS2010 and MS SQL 2012 11/20 13:50
2F:推 womamayo:解决了,感谢您的回覆 11/21 16:58