<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sybase数据库技术，数据库恢复专家 &#187; last_day</title>
	<atom:link href="http://www.dbainfo.net/tag/last_day/feed" rel="self" type="application/rss+xml" />
	<link>https://www.dbainfo.net</link>
	<description>提供Sybase ASE及Sybase SQL Anywhere数据库修复服务，电话：13811580958(微信)，QQ：289965371！We have many years of experience in recovering data from damanged Sybase devices. Contact us by Phone: +86 13811580958 Wechat: 13811580958 Email: 289965371@qq.com</description>
	<lastBuildDate>Sat, 14 Jun 2025 16:28:02 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Sybase ASE v15.x中查询本月最后一天的日期的3种实现方法</title>
		<link>https://www.dbainfo.net/sybase-ase-current-date-last_day.htm</link>
		<comments>https://www.dbainfo.net/sybase-ase-current-date-last_day.htm#comments</comments>
		<pubDate>Tue, 09 Nov 2010 08:22:51 +0000</pubDate>
		<dc:creator>dbainfo</dc:creator>
				<category><![CDATA[Sybase ASE]]></category>
		<category><![CDATA[ASE]]></category>
		<category><![CDATA[create function]]></category>
		<category><![CDATA[date]]></category>
		<category><![CDATA[last_day]]></category>

		<guid isPermaLink="false">http://www.dbainfo.net/?p=396</guid>
		<description><![CDATA[Oracle中查询月底那天的日期的函数为：last_day()。 在ASE中没有对应的函数，在Oracle移植到Sybase的时候，需要手动编写函数来实现，幸亏ASE15.0.2后开始支持自定义函数。 下面提供3种实现查询本月最后一天的日期的SQL语句： 第一种： select dateadd(dd,-1,convert(char(8),(datepart(yy,dateadd(mm,1,getdate()))*10000+datepart(mm,dateadd(mm,1,getdate()))*100+01))) go &#160; 将本月的下一个月的年份和月份提取出来，以数字的形式相加，然后转化成类似YYYYMMDD的这种日期格式。最后直接取下个月的第一天的前一天即可。在ASE中字符串 &#39;20110101&#39; 和 convert(datetime,&#39;20110101&#39;) 是相等的。 &#160; 第二种： select dateadd(dd,-1, convert(datetime,left(convert(varchar, dateadd(mm,1,getdate()) ,112),6) + &#39;01&#39;) ) go 先将当前日期的下一个月的日期显示成YYYYMMDD的格式，取前6个字符和01拼接成下一月的第一天的日期，然后取前一天即可。convert函数中style的样式，请参考：Sybase ASE convert函数中的style日期时间样式 或者下面的写法： select dateadd(dd,-1,&#160; left(convert(varchar, dateadd(mm,1,getdate()) ,112),6) + &#39;01&#39;&#160; ) go 思路是一样的。 &#160; 第三种： SELECT DATEADD(DD, -DAY(DATEADD(MM, 1, getdate() )), DATEADD(MM, 1, getdate() ))&#160; go &#160; 此方法的思路为：计算当前日期的下一月的那天的前N天的日期，N为当前日期在本月的天数。 &#160; 改进成类似Oracle中的last_day()的函数如下：&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Oracle中查询月底那天的日期的函数为：last_day()。 在ASE中没有对应的函数，在Oracle移植到Sybase的时候，需要手动编写函数来实现，幸亏ASE15.0.2后开始支持自定义函数。</p>
<p>下面提供3种实现查询本月最后一天的日期的SQL语句：</p>
<p>
	第一种：</p>
<blockquote>
<p>select dateadd(dd,-1,convert(char(8),(datepart(yy,dateadd(mm,1,getdate()))*10000+datepart(mm,dateadd(mm,1,getdate()))*100+01))) <br />
		go<br />
		&nbsp;</p>
</blockquote>
<p>将本月的下一个月的年份和月份提取出来，以数字的形式相加，然后转化成类似YYYYMMDD的这种日期格式。最后直接取下个月的第一天的前一天即可。在ASE中字符串 &#39;20110101&#39; 和 convert(datetime,&#39;20110101&#39;) 是相等的。</p>
<p>&nbsp;</p>
<p>第二种：<span id="more-396"></span></p>
<blockquote>
<p>select dateadd(dd,-1, convert(datetime,left(convert(varchar, dateadd(mm,1,getdate()) ,112),6) + &#39;01&#39;) )<br />
		go</p>
</blockquote>
<p>先将当前日期的下一个月的日期显示成YYYYMMDD的格式，取前6个字符和01拼接成下一月的第一天的日期，然后取前一天即可。convert函数中style的样式，请参考：<a href="../sybase-ase-convert-function-style-date-time-format.htm" title="Sybase ASE convert函数中的style日期时间样式">Sybase ASE convert函数中的style日期时间样式</a></p>
<p>或者下面的写法：</p>
<blockquote>
<p>select dateadd(dd,-1,&nbsp; left(convert(varchar, dateadd(mm,1,getdate()) ,112),6) + &#39;01&#39;&nbsp; )<br />
		go</p>
</blockquote>
<p>思路是一样的。</p>
<p>&nbsp;</p>
<p>第三种：</p>
<blockquote>
<p>SELECT DATEADD(DD, -DAY(DATEADD(MM, 1, getdate() )), DATEADD(MM, 1, getdate() ))&nbsp; <br />
		go</p>
</blockquote>
<p>&nbsp;</p>
<p>此方法的思路为：计算当前日期的下一月的那天的前N天的日期，N为当前日期在本月的天数。</p>
<p>&nbsp;</p>
<p>改进成类似Oracle中的last_day()的函数如下：&nbsp;</p>
<p>第一种：</p>
<blockquote>
<p>create function last_day(@d datetime)<br />
		returns datetime<br />
		as<br />
		begin<br />
		declare @rtndate datetime<br />
		select @rtndate = dateadd(DD,-day(dateadd(MM,1,@d)),dateadd(MM,1,@d) )<br />
		return @rtndate<br />
		end<br />
		go</p>
</blockquote>
<p>第2种：</p>
<blockquote>
<p>create function dbo.last_day2(@current_date datetime)<br />
		returns datetime<br />
		as<br />
		begin<br />
		&nbsp; return dateadd(dd,-1, left(convert(varchar, dateadd(mm,1,@current_date) ,112),6) + &#39;01&#39;&nbsp; )<br />
		end<br />
		go<br />
		&nbsp;</p>
</blockquote>
<p>&nbsp;</p>
<p>实现效果如下：</p>
<blockquote>
<p>1&gt; select dbo.last_day(getdate()) ,dbo.last_day2(getdate() )<br />
		2&gt; go</p>
<p>		&nbsp;-------------------------- --------------------------<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Nov 30 2010&nbsp; 4:19PM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Nov 30 2010 12:00AM</p>
<p>		(1 row affected)<br />
		1&gt; select dbo.last_day(&#39;19991231&#39;) ,dbo.last_day2(&#39;19991231&#39; )<br />
		2&gt; go</p>
<p>		&nbsp;-------------------------- --------------------------<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dec 31 1999 12:00AM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dec 31 1999 12:00AM</p>
<p>		(1 row affected)<br />
		1&gt; select dbo.last_day(&#39;20100228&#39;) ,dbo.last_day2(&#39;20100228&#39; )<br />
		2&gt; go</p>
<p>		&nbsp;-------------------------- --------------------------<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Feb 28 2010 12:00AM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Feb 28 2010 12:00AM</p>
<p>		(1 row affected)<br />
		1&gt; select dbo.last_day(&#39;20000228&#39;) ,dbo.last_day2(&#39;20000228&#39; )<br />
		2&gt; go</p>
<p>		&nbsp;-------------------------- --------------------------<br />
		&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Feb 29 2000 12:00AM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Feb 29 2000 12:00AM</p>
<p>		(1 row affected)<br />
		1&gt;</p>
</blockquote>
<div style="clear: both; margin: 10px 0pt; border: 1px dashed rgb(153, 153, 153); font-size: 12px; padding: 5px 10px;">
<li>本文链接地址：<a href="https://www.dbainfo.net/sybase-ase-current-date-last_day.htm">https://www.dbainfo.net/sybase-ase-current-date-last_day.htm</a>；</li>
<li>本文为dbainfo个人原创，请在尊重作者劳动成果的前提下进行转载；</li>
<li>转载务必注明原始出处 : <a href="https://www.dbainfo.net/">Sybase数据库技术，数据库恢复专家</a>；</li>
<li>对《<a href="https://www.dbainfo.net/sybase-ase-current-date-last_day.htm">Sybase ASE v15.x中查询本月最后一天的日期的3种实现方法</a>》有何疑问或见解，请在本文下方发表；</li>
<li>对网站还有其他问题或建议，请提交在<a href="https://www.dbainfo.net/messages" target="_blank">留言板</a>，谢谢！</li>
</div>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li>2010-12-23 -- <a href="https://www.dbainfo.net/import-datetime-date-to-oracle-from-sybase-ase.htm" title="从sybase向oracle导入时间类型的数据">从sybase向oracle导入时间类型的数据</a> (0)</li><li>2019-04-12 -- <a href="https://www.dbainfo.net/sybase-ase-asa-recovery-service.htm" title="Sybase ASE及SQL Anywhere数据库修复专家">Sybase ASE及SQL Anywhere数据库修复专家</a> (0)</li><li>2015-01-16 -- <a href="https://www.dbainfo.net/one-way-to-recover-master-configuration-area.htm" title="master数据库配置区域(configuration area)损坏的一种修复方法">master数据库配置区域(configuration area)损坏的一种修复方法</a> (1)</li><li>2014-10-10 -- <a href="https://www.dbainfo.net/ase-object-name-length-limit.htm" title="ASE对象名称长度限制">ASE对象名称长度限制</a> (0)</li><li>2014-06-09 -- <a href="https://www.dbainfo.net/count_all_tables_rowcount.htm" title="统计用户数据库内所有表的行数">统计用户数据库内所有表的行数</a> (0)</li><li>2013-11-19 -- <a href="https://www.dbainfo.net/showplan_html_format.htm" title="以HTML格式显示ASE查询计划">以HTML格式显示ASE查询计划</a> (0)</li><li>2013-11-11 -- <a href="https://www.dbainfo.net/ase-15-0-3-for-windows-installation5.htm" title="Sybase ASE 15.0.3 for windows平台安装文档 – 5、安装后的配置工作">Sybase ASE 15.0.3 for windows平台安装文档 – 5、安装后的配置工作</a> (1)</li><li>2013-11-11 -- <a href="https://www.dbainfo.net/ase-15-0-3-for-windows-installation4.htm" title="Sybase ASE 15.0.3 for windows平台安装文档 – 4、安装Sybase数据库服务">Sybase ASE 15.0.3 for windows平台安装文档 – 4、安装Sybase数据库服务</a> (0)</li><li>2013-11-11 -- <a href="https://www.dbainfo.net/ase-15-0-3-for-windows-installation3.htm" title="Sybase ASE 15.0.3 for windows平台安装文档 – 3、升级到 Sybase 15.0.3 ESD #3">Sybase ASE 15.0.3 for windows平台安装文档 – 3、升级到 Sybase 15.0.3 ESD #3</a> (0)</li><li>2013-11-11 -- <a href="https://www.dbainfo.net/ase-15-0-3-for-windows-installation2.htm" title="Sybase ASE 15.0.3 for windows平台安装文档 – 2、安装Sybase ASE程序">Sybase ASE 15.0.3 for windows平台安装文档 – 2、安装Sybase ASE程序</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>https://www.dbainfo.net/sybase-ase-current-date-last_day.htm/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
