这是计算一个月第一天的SQL 脚本: SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

先来 2010-02-28 04:36:08
一个月的第一天



这是计算一个月第一天的SQL 脚本:
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
这个脚本的工作原理??
...全文
754 14 点赞 打赏 收藏 举报
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
稻草_木偶 2011-12-07
[Quote=引用 4 楼 feixianxxx 的回复:]
SQL code
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
===>
--1
DATEDIFF(mm,0,getdate()求出本月和1900年一月差几个月
--2
DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 将0(即1900-01-01)加上上面求出的月 就是本月的第一天了
[/Quote]
学习了~
  • 打赏
  • 举报
回复
先来 2010-03-03
前一个月最后一天的sql脚本
select DATEADD(DD,-1,convert(varchar(8),getdate(),21)+'01')
  • 打赏
  • 举报
回复
hchjjun 2010-03-02
自然月每月第一天容易得到,关键是如果客户自定义月末的月初值的算法
  • 打赏
  • 举报
回复
yjh53615728 2010-03-01
学习……再学习
回复内容 回复内容太短了!
  • 打赏
  • 举报
回复
huilei_001 2010-03-01
学习了 每天回帖即可获得10分可用分(纯引用)
  • 打赏
  • 举报
回复
SQL77 2010-03-01
引用 1 楼 happyflystone 的回复:
select cast(0 as datetime) 
-----------------------
1900-01-01 00:00:00.000

(1 行受影响)

DATEDIFF(mm,0,getdate()) -- 得到与1900-01-01相关多少个月

DATEADD(mm, M, 0) --m即上面得到相差的月份,0代表1900-01-01 ,加上相关的月分就是这个月的第一天

UP..............
  • 打赏
  • 举报
回复
cailee 2010-03-01
select cast(convert(char(8),getdate(),120)+'01' as datetime)
  • 打赏
  • 举报
回复
cailee 2010-03-01
引用楼主 xianlaioy 的回复:
一个月的第一天



这是计算一个月第一天的SQL 脚本:
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
这个脚本的工作原理??

0在sqlserver里面是1900-1-1 0:00:00
select cast(0 as datetime) --1900-01-01 00:00:00.000

这天是星期一,是第一个季度,是第一个星期,是第一个月的第一天等等。所以很多东西都可以靠这个日期来计算。
select DATEDIFF(mm,0,getdate()) 计算1900年到现在共多少个月
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 加上距离的月份就得到这个月的第一天
  • 打赏
  • 举报
回复
Mr_Nice 2010-03-01
[以1900-1-1作为参照]
select DATEDIFF(mm,0,getdate()) --与1900-1-1差几个月
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) --在1900-1-1的基础上加上相差的月份数,得到的日期即为当月第一天

[所有月的第一天都是-01,所以就得到月份就行了.]
select convert(char(7),getdate(),120)+'-01'


继续学习...........
  • 打赏
  • 举报
回复
wkzhx 2010-03-01
我也来一个

select convert(datetime,convert(varchar(8),getdate(),120)+'01')
  • 打赏
  • 举报
回复
feixianxxx 2010-02-28
SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
===>
--1
DATEDIFF(mm,0,getdate()求出本月和1900年一月差几个月
--2
DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 将0(即1900-01-01)加上上面求出的月 就是本月的第一天了
  • 打赏
  • 举报
回复
bancxc 2010-02-28
学习了 每天回帖即可获得10分可用分
  • 打赏
  • 举报
回复
-狙击手- 2010-02-28
简单点:

select convert(char(7),getdate(),120)+'-01'
  • 打赏
  • 举报
回复
-狙击手- 2010-02-28
select cast(0 as datetime) 
-----------------------
1900-01-01 00:00:00.000

(1 行受影响)

DATEDIFF(mm,0,getdate()) -- 得到与1900-01-01相关多少个月

DATEADD(mm, M, 0) --m即上面得到相差的月份,0代表1900-01-01 ,加上相关的月分就是这个月的第一天
  • 打赏
  • 举报
回复
相关推荐
发帖
疑难问题
加入

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-02-28 04:36
社区公告
暂无公告