SQL 获取日期中第一次出现的 15 号
我需要编写一个函数或 SP 来返回 15 号的第一次出现。例如,如果我传递日期为 5 月 8 日,那么它应该返回 5 月 15 日。如果我5月30日过去,那么应该在6月15日返回。
I need to write a function or SP that will return the first occurance of the 15th. For example, if I pass the date as May 8th, then it should return May 15th. If I pass May 30th, then it should return June 15th.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
单程
One way
怎么样;
How about;
只是另一种方法:
Just another way of doing it:
这个功能可能对你有帮助
this function may helps you
尝试
在这里解释 http://improve。 dk/archive/2006/12/13/sql-server-datetime-rounding-made-easy.aspx
使用该链接您可以实现您想要的
更新:弄错了......参见民主党的回答
try
explained here http://improve.dk/archive/2006/12/13/sql-server-datetime-rounding-made-easy.aspx
using that link you can achive what you want
UPDATE: got it wrong ... see Dems answer
Rob 的答案很接近...
如果您以月而不是天为单位获取 datediff,并将您的基数设为一个月的 15 号,然后再添加一个月...
DATEADD(MONTH, DATEDIFF) (MONTH, 14, Created) + 1, 14)
EDIT
修改为使用 DATEDIFF MONTH 的工作方式,而不是我认为的工作方式;)
DATEADD(MONTH, DATEDIFF(MONTH, 0, 创建时间 - 15) + 1, 14)
Rob's answer is close...
if you take the datediff in months, rather than days, and make your base the 15'th of a month, then add one extra month...
DATEADD(MONTH, DATEDIFF(MONTH, 14, Created) + 1, 14)
EDIT
Modified to use DATEDIFF MONTH how it works, not how I thought it should work ;)
DATEADD(MONTH, DATEDIFF(MONTH, 0, Created - 15) + 1, 14)
我通常会做这样的事情:
处理该月的最后一天有点棘手,因为月份的天数是可变的,并且 SQL Server 的日期数学有时有点巴洛克。
I usually do something like this:
dealing with the last day of the month is a wee bit trickier, since month's have variable numbers of days, and SQL Server's date math is sometimes a wee bit baroque.