SQL查询当月记录

zhifeng0014 2009-03-06 10:38:20
表中字段Time 数据类型为varchar(10)
我的理解数据类型为datetime 是有时间的(我不想要小时分钟,因为Time是受理时间,可能为过去,所以我这里设为varchar(10)不知道对不知道)
用了js日历控件显示为如:2009-03-06的格式
怎么查询当月的记录?
用between and??
这个句子适合char类型的吗
...全文
1330 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
northow 2009-03-07
  • 打赏
  • 举报
回复
在一次实战中,遇到一个问题,即数据库中有一个字段为自动获取时间,添加数据时,当时写入数据库字段的时间是2009-02-14 14:42:33.290,而在项目中,要判断系统当前时间和当时写入数据库时的时间进行比较,主要是获得两者之间的分钟差。

当时的想法是这样,我现在系统的时间是2009-02-14 14:56:09.222,我首先设计一个方法,把所有的时间格式转换成长整形(需要去掉其中的-和空格,冒号等东东,因为要获取分钟差,所以只截取到分钟的部分),所以,当前时间就变成200902141456,数据库中的时间变成200902141432,两者相减,分钟差不就出来了?

这方法应该是可行的,但是想想,截取过程是不是复杂了点呢?

最后才发现,原来Sql server自带有一个方法datediff(a,b,c),这个方法就是用来计算时间差的。其中,方法中的a代表时间的单位,b代表数据库中的时间字段名,c同b一样(如果要当前时间,则直接写getdate()吧),方法实现后,就是c-b的时间差了。我想这应该是最简单的方法了吧...

sql语句举例:select datediff(s,RegTime,getdate()) from User where UserID=1。
longyangyxm 2009-03-07
  • 打赏
  • 举报
回复
datetime类型也没关系
你也可以转化成字符型的,还有很多种格式可以转,datetime类型特有的

CONVERT(varchar(10),时间,121)

zzxap 2009-03-07
  • 打赏
  • 举报
回复
select * from 表名 where datediff(mm,[time],getdate())=0
mm才是月份
wuyq11 2009-03-07
  • 打赏
  • 举报
回复
Time 为日期型。
也可用cast转化,
select * from table where datediff(mm,[time],getdate())=0
wangzhenyue 2009-03-07
  • 打赏
  • 举报
回复
上面的是当月的。。
当天的为
select * from user_tb where datediff(dd,时间的字段名,getdate())=0
wangzhenyue 2009-03-07
  • 打赏
  • 举报
回复
select * from user_tb where datediff(MM,时间的字段名,getdate())=0
_NET2004 2009-03-07
  • 打赏
  • 举报
回复
可以在定义的时候10个宽度,也没有关系,存储的时候进行转换
LeeeeSin 2009-03-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jiang_jiajia10 的回复:]
SQL code
select * from table where datediff(d,field,getdate())=0
[/Quote]

指定日期OK的了..
king_博古 2009-03-07
  • 打赏
  • 举报
回复
..........................bang ding.................................
阿彪兄 2009-03-07
  • 打赏
  • 举报
回复
楼上已经说得很清楚了
CutBug 2009-03-07
  • 打赏
  • 举报
回复
select * from tableName where time between substring('2009-03-06',0,9)+'1' and '2009-03-06' --2009-3-1~'2009-3-6
wenblue7 2009-03-07
  • 打赏
  • 举报
回复
要先将字符串转换为时间吧
select * from 表名 where datediff(mm,Convert(datetime,[time]),getdate())=0
memorywang 2009-03-07
  • 打赏
  • 举报
回复
select * from userTable where datediff(MM,数据库时间字段名称,getdate())=0
changjiangzhibin 2009-03-06
  • 打赏
  • 举报
回复
datetime类型后面是有时分秒的,如果指定格式YYYY-MM-DD,也会有00:00:00,

只是可以控件显示的格式,数据库中存放的数据还是有时分秒的,宜定义长一点如Varchar(20)
pt1314917 2009-03-06
  • 打赏
  • 举报
回复

select * from 表名 where datediff(mm,[time],getdate())=0


xsm545 2009-03-06
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 jiang_jiajia10 的回复:]
SQL code
select * from table where datediff(d,field,getdate())=0
[/Quote]
jiang_jiajia10 2009-03-06
  • 打赏
  • 举报
回复

select * from table where datediff(d,field,getdate())=0

62,268

社区成员

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

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

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

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