﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-joinose-随笔分类-Sqlite</title><link>http://www.blogjava.net/joinose/category/11522.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 07:42:29 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 07:42:29 GMT</pubDate><ttl>60</ttl><item><title>[FAQ]Sqlite中如何返回本地化当前时间？</title><link>http://www.blogjava.net/joinose/archive/2006/06/18/53608.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Sun, 18 Jun 2006 09:28:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/06/18/53608.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/53608.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/06/18/53608.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/53608.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/53608.html</trackback:ping><description><![CDATA[在做ClinicOS的时候遇到一个问题，在保存病历登记时间时，我使用了“CURRENT_TIMESTAMP”，但这有个问题，它返回的是UTC Time，这对我们中国人没啥用，一直希望能想办法将它转为localtime。今天刚好有空，所以去查了查Sqlite的Mail List，果然也有人遇到了这个问题，我从一篇名为《translate time comparison statement》（http://www.mail-archive.com/sqlite-users@sqlite.org/msg12350.html）中看到这样的回复：<br /><pre style="margin: 0em;">Mark Wyszomierski wrote:<br /><br /></pre><blockquote style="border-left: 0.2em solid rgb(85, 85, 238); margin: 0em; padding-left: 0.85em;"><blockquote style="border-left: 0.2em solid rgb(85, 85, 238); margin: 0em; padding-left: 0.85em;"><pre style="margin: 0em;">You may want<br /><br />WHERE julianday(date('now')) - julianday(date(arrival_date)) &gt; 7<br /><br /></pre><tt></tt><tt></tt></blockquote></blockquote><pre style="margin: 0em;">Mark,<br /><br /></pre><tt>You should still use the 'localtime' modifier on the 'now' value if your 
</tt><tt>timestamps are local time since 'now' always returns UTC times.
</tt><pre style="margin: 0em;">WHERE julianday(date('now', 'localtime')) - julianday(date(arrival_date)) &gt; 7<br /><br />嘿嘿，看来如果想得到一个符合本机区域设置的当前时间，必须用date函数来转换，<br />但date只函数只返回当前日期，而我需要的是返回当前日期及时间，所以这里把它换成datetime函数，即：<br />datetime(CURRENT_TIMESTAMP,'localtime')<br /><br />以下是sqlite下测试的输出信息：<br />sqlite&gt; select CURRENT_TIMESTAMP;<br />2006-06-18 09:23:36<br />sqlite&gt; select datetime(CURRENT_TIMESTAMP,'localtime');<br />2006-06-18 17:23:44<br />sqlite&gt;<br /><br /></pre><br /><img src ="http://www.blogjava.net/joinose/aggbug/53608.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-06-18 17:28 <a href="http://www.blogjava.net/joinose/archive/2006/06/18/53608.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[FAQ]Sqlite中有没有像Oracle中的decode函数一样的功能?</title><link>http://www.blogjava.net/joinose/archive/2006/05/25/48172.html</link><dc:creator>水晶鱼</dc:creator><author>水晶鱼</author><pubDate>Thu, 25 May 2006 12:12:00 GMT</pubDate><guid>http://www.blogjava.net/joinose/archive/2006/05/25/48172.html</guid><wfw:comment>http://www.blogjava.net/joinose/comments/48172.html</wfw:comment><comments>http://www.blogjava.net/joinose/archive/2006/05/25/48172.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/joinose/comments/commentRss/48172.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/joinose/services/trackbacks/48172.html</trackback:ping><description><![CDATA[在用Python写ClinicOS时,数据库端遇到了不少问题,今天遇到的是如何实现像Oracle中的decode函数一样的功能?google了很久都没有找到答案,无赖之下只能滴了两滴眼药水,然后仔细阅读Sqlite文档,最后终于在这个页面找到了答案:<br /><a href="http://www.sqlite.org/lang_expr.html">http://www.sqlite.org/lang_expr.html</a><br />实现这个功能的就是case...when...then...esle...end语句,用法很简单,结构比decode清晰多了,现举例如下:<br />例一:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">Sqlite的case用法简单例程</span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #ff00ff">case</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><span style="COLOR: #0000ff">when</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">then</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">男</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />         </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">女</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">end</span><span style="COLOR: #000000"> ;</span></span></div><br />例二:<br />假设有个表test,其中用一个整形字段sex表示性别,1表示男,0表示女,-1表示未知,其它情况表示未填,则sql为:<br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Code_Closed_Image" onclick="this.style.display='none'; Code_Closed_Text.style.display='none'; Code_Open_Image.style.display='inline'; Code_Open_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" width="11" align="top" /><img id="Code_Open_Image" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text.style.display='none'; Code_Closed_Image.style.display='inline'; Code_Closed_Text.style.display='inline';" height="16" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" width="11" align="top" /><span id="Code_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">Sqlite的case用法详细举例</span><span id="Code_Open_Text" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="COLOR: #008080">1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #0000ff">select</span><span style="COLOR: #000000"> <br /></span><span style="COLOR: #008080">2</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />   </span><span style="COLOR: #ff00ff">case</span><span style="COLOR: #000000"> sex<br /></span><span style="COLOR: #008080">3</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">when</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">then</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">男</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000"><br /></span><span style="COLOR: #008080">4</span><span style="COLOR: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #0000ff">when</span><span style="COLOR: #000000"> </span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">then</span><span style="COLOR: #000000"> </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000">女<br /></span><span style="COLOR: #008080">5</span><span style="COLOR: #ff0000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      when -1 then </span><span style="COLOR: #ff0000">'</span><span style="COLOR: #000000">未知</span><span style="COLOR: #ff0000">'</span><span style="COLOR: #ff0000"><br /></span><span style="COLOR: #008080">6</span><span style="COLOR: #ff0000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      else </span><span style="COLOR: #ff0000">''</span><span style="COLOR: #ff0000"><br /></span><span style="COLOR: #008080">7</span><span style="COLOR: #ff0000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      end as "性别"<br /></span><span style="COLOR: #008080">8</span><span style="COLOR: #ff0000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />from test</span></span></div><br />注意,when...then可以出现N组,且注意中间没有任标点,权用逗号隔开.<br />希望对用Sqlite的朋友们有所帮助<br /><img src ="http://www.blogjava.net/joinose/aggbug/48172.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/joinose/" target="_blank">水晶鱼</a> 2006-05-25 20:12 <a href="http://www.blogjava.net/joinose/archive/2006/05/25/48172.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>