<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vikings

    #

    從tomcat 5到resin 3

    web.xml里
    <taglib>拋錯(cuò):說是<web-app>下沒有<taglib>元素。

    怪怪的,在tomcat 5.5下跑,一點(diǎn)事都沒有.

    查了webapp_2.4.xsd,web-app下是jsp-config的元素.

    試了把<jsp-config>包<taglib>,靠,問題解決。

    看來resin3對(duì)dtd檢查比tomcat嚴(yán)格.

    同樣的問題還有<servlet>下的<display-name>元素

    posted @ 2007-12-04 14:26 Vikings 閱讀(250) | 評(píng)論 (0)編輯 收藏

    session id 丟失問題

    問題:
    sessino的id存放在cookie中,  
      在操作頻繁寫cookie時(shí),  
      session丟失,沒有發(fā)現(xiàn)規(guī)律。  
      session丟失后,cookie中的session   id變?yōu)樾碌木幪?hào),session丟掉了。
    原因:
    問題知道了,cookie的個(gè)數(shù)受

    瀏覽器的限制才20個(gè),  
      session的id存放在cookie中,如果放入過多的cookie會(huì)把session擠出20隊(duì)列。


    posted @ 2007-11-28 21:06 Vikings 閱讀(1260) | 評(píng)論 (1)編輯 收藏

    Velocity語法說明

    在struts中使用vm模板.找到了velocity的語法說明,很簡單
    一,變量定義
    因?yàn)槭且环N弱類型語言,所以不用定義變量的類型,編譯器根據(jù)賦值的類型自動(dòng)進(jìn)行判斷,定義的關(guān)鍵字
    為set,set前要加#,變量名前必須加$,變量名和值的組合要放在小括號(hào)中,不必用分號(hào)結(jié)束語句。例如:
    #set($maxValue=5)
    #set($name="Bob")
    也可以定義數(shù)組,形式如下:
    #set($arrayName=["element1","element2",...])
    例如:#set($members=["mary","rose","Mr Black"])
    二,注釋
    對(duì)單行注釋,形式如下:
    #set($name="mike") ##這是一個(gè)注釋:定義名字為mike
    對(duì)多行注釋,形式如下:
    #set($name="mike")
    #*
    這是一個(gè)多行注釋:定義名字為mike,
    如果定義為其他的,不符合用戶習(xí)慣!
    *#
    三,流程控制
    支持的流程控制有:#if...#else...#end(邏輯判斷語句)和#foreach(... in ...)...#end(循環(huán)語句),可以嵌套使用。例如:if的例子
     <table>
        <tr>
          <td>
          #set($name="mary")
          #set($sex="female")
          #set($age=20)
          #set($coutry="America")
     
          #if($name=="mary")
            hello mary!<br>
          #end
     
          #if($sex=="male")
            You are a boy!<br>
          #else
            You are a girl!<br>
          #end
     
          #if($age<12)
            You are too young!<br>
          #elseif($age>12 && $age<18)
            You are not an adult!<br>
          #else
            You are an adult!<br>
          #end
     
          #if($country!="China")
            #if($country=="Amemica")
              You are from America!<br>
            #end
          #else
            #if($city=="Beijing")
              You are from Beijing!<br>
            #else
              You are not from Beijing!<br>
            #end
          #end
          </td>
        </tr>
     </table>
    例如:foreach的例子
     <table>
        <tr>
          <td>
          #set($members=["mary","rose","mike"])
          #foreach($member in $members)
            $member<br>
          #end
          </td>
        </tr>
     </table>
    另外,foreach循環(huán)不僅可以顯示數(shù)組內(nèi)容,也可以顯示java的Vector、List、Iterator等對(duì)象的內(nèi)容,

    posted @ 2007-11-27 17:44 Vikings 閱讀(3158) | 評(píng)論 (0)編輯 收藏

    velocity tools 1.3

    request里獲取參數(shù).
    用org.apache.velocity.tools.view.tools.ParameterParser類

    example
        public void setup(HttpServletRequest req)
        {
            ParameterParser pp = new ParameterParser(req);
            setCriteria(pp.getString("find"));
            setIndex(pp.getInt("index", 0));
            setItemsPerPage(pp.getInt("show", DEFAULT_ITEMS_PER_PAGE));
        }

    posted @ 2007-11-26 23:01 Vikings 閱讀(314) | 評(píng)論 (0)編輯 收藏

    Json-lib 的JsonArray比Json-rpc的JsonArray用起來爽

    1.json-rpc里的jsonArray一般要這么拿數(shù)據(jù),再包裝
    JSONArray cgs = new JSONArray();
      Collection<RecruitmentVO> categories = informationDAO.getAllInformation();
      for(RecruitmentVO c : categories){   
       JSONObject o = new JSONObject();
       o.put("id", c.getId());
       o.put("title", c.getCompanyName());
       cgs.put(o);
      }
      return cgs.toString();

    2.用了json-lib的JsonArray,一切很方便
       List<AjSaryxx> list = saryService.queryDBSaryxxRseultList(zjxx,pageInfo);
       JSONArray jsonArray = JSONArray.fromObject(list);        

    接著List里有什么, JSONArray就轉(zhuǎn)為相對(duì)應(yīng)的Json

     

    JSON

     

    Java

    string

    <=>

    java.lang.String, java.lang.Character, char

    number

    <=>

    java.lang.Number, byte, short, int, long, float, double

    true|false

    <=>

    java.lang.Boolean, boolean

    null

    <=>

    null

    function

    <=>

    net.sf.json.JSONFunction

    array

    <=>

    net.sf.json.JSONArray (object, string, number, boolean, function)

    object

    <=>

    net.sf.json.JSONObject


    工具幫你完成轉(zhuǎn)換.
    稍為不是很方便的是. json-lib-1.5.jar需要以下jar. 一個(gè)一個(gè)找對(duì)版本才能用. 網(wǎng)站就沒有一個(gè)打包好的..

    • jakarta commons-lang 2.3
    • jakarta commons-beanutils 1.7.0
    • jakarta commons-collections 3.2
    • jakarta commons-logging 1.1
    • ezmorph 1.0.3

    posted @ 2007-11-01 22:28 Vikings 閱讀(3819) | 評(píng)論 (0)編輯 收藏

    調(diào)用jsonrpc的技巧

    一段不用每個(gè)jsp頁面都JSONRPCBridge.registerObject的方法

    1. JsonContextLinster
    在spring文件里讀取需要注冊(cè)bridge的bean名單
    registerObject
    public class JSONContextListener implements ServletContextAttributeListener {
        
    private final Log log = LogFactory.getLog(JSONContextListener.class);

        
    public void attributeAdded(ServletContextAttributeEvent event) {
            
    if (event.getName().equals(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE)) {
                
    // register LookupHelper so we can call methods on it
                ApplicationContext ctx = (ApplicationContext) event.getValue();

                
    // check for null so we don't have to initialize Spring in tests
                if (ctx != null{
                    log.debug(
    "Registering jsonObjects for XmlHttpRequest to GlobalBridge");
                    
                    JSONRPCBridge jsonBridge 
    = JSONRPCBridge.getGlobalBridge();

                    Map jsonObjects 
    = (Map) ctx.getBean("jsonObjects");
                    
    for (Object name : jsonObjects.keySet()) {
                        jsonBridge.registerObject(name, jsonObjects.get(name));
                    }

                    
                }

            }
            
        }

    public void attributeReplaced(ServletContextAttributeEvent event) {
            attributeAdded(event);
        }

    }


    2.spring配置里的jsonObject
        <!-- json registration -->
        
    <bean name="jsonObjects" class="java.util.HashMap">
            
    <constructor-arg>
                
    <map>
                    
    <entry key="information" value-ref="informationJson"></entry>
                
    </map>
            
    </constructor-arg>
        
    </bean> 

        
    <bean id="informationJson" class="com.vikings.tools.json.Information" >
            
    <property name="informationDAO" ref="informationDAO" />
        
    </bean>

    3.web.xml里增加配置剛才寫的listener
    <listener>
            
    <listener-class>com.vikings.tools.json.JSONContextListener</listener-class>
        
    </listener>

    到這里就不用這么寫了
    <jsp:useBean id="JSONRPCBridge" scope="session"
       class
    ="com.metaparadigm.jsonrpc.JSONRPCBridge" />

    <% JSONRPCBridge.registerObject("myTestObject", aTestObject); %>
    這個(gè)也不需要
    // Find the JSONRPCBridge for this session or create one
    // if it doesn't exist. Note the bridge must be named "JSONRPCBridge"
    // in the HttpSession for the JSONRPCServlet to find it.
    HttpSession session = request.getSession();
    JSONRPCBridge json_bridge 
    = null;
    json_bridge 
    = (JSONRPCBridge) session.getAttribute("JSONRPCBridge");
    if(json_bridge == null{
        json_bridge 
    = new JSONRPCBridge();
        session.setAttribute(
    "JSONRPCBridge", json_bridge);
    }

    posted @ 2007-11-01 22:19 Vikings 閱讀(1476) | 評(píng)論 (0)編輯 收藏

    T3 里的圖片顯示

    例子參考:
    T3自帶的workbeanch里有
    1.ChartService class
    2.ChartAsset class
    3.IChartProvider的例子代碼

    思路:
    因?yàn)樵贒AO,service里返回的Info對(duì)象里已經(jīng)有圖片的屬性,
    類型是byte[]
    所以直接out.write(byte[])獲得圖片.

    題外:
    其中,AbstractService相比T4少了Webresponse屬性,
    不可以直接在IChartProvider里定義 
    public void sendDynaAsset(WebResponse response);
    然后在實(shí)現(xiàn)類里用這句 
    OutputStream out = response.getOutputStream(new ContentType("image/jpeg"));
    來操作out.write .
    T3里都在AbstractService里操作out, service()方法里就有參數(shù)ResponseOutputStream output

    代碼:
    1. ChartService
    public class ChartService extends AbstractService{

      
    public void service(
            IEngineServiceView engine,
            IRequestCycle cycle,
            ResponseOutputStream output)
            
    throws ServletException, IOException
        
    {

    .

      
    try
            
    {
                IChartProvider provider 
    = (IChartProvider) component;

                
    byte[] bytes = provider.getImageBytes();

                
    //默認(rèn)規(guī)則,page頁面里若數(shù)據(jù)庫里沒有bytes,則返回null
                if (bytes==null)
                    
    //顯示默認(rèn)圖片
                    bytes = drawDefaultImage();         
                
                output.setContentType(
    "image/jpeg");

                
    // I've seen a few bits of wierdness (including a JVM crash) inside this code.
                
    // Hopefully, its a multi-threading problem that can be resolved
                
    // by synchronizing.

                
    synchronized (this)
                
    {
                    output.write(bytes);
                }

            }


       }


    protected byte[] drawDefaultImage() {
            
    int width = 102, height = 126;
            BufferedImage image 
    = new BufferedImage(width, height,
                    BufferedImage.TYPE_INT_RGB);
            Graphics g 
    = image.getGraphics();

            g.setColor(Color.WHITE);
            g.fillRect(
    00, width, height);

            g.setColor(Color.RED);
            g.setFont(
    new Font("Default", Font.PLAIN, 22));
            g.drawString(
    "暫無照片"10, height / 2 - 10);

            
    byte buffer[] = null;
            
    try {
                ByteArrayOutputStream out 
    = new ByteArrayOutputStream();
                ImageIO.write(image, 
    "JPEG", out);
                buffer 
    = out.toByteArray();
            }
     catch (Exception e) {
                log.info(
    "繪制默認(rèn)圖片失敗");
            }

            
    return buffer;
        }

    }


    2. ChartAsset
    與workbeanch里的CharAsset一樣,沒有任何增刪
    public class ChartAsset extends AbstractAsset{
      
    private IEngineService _chartService;
      
    private IComponent _chartProvider;
     
    public ChartAsset(IRequestCycle cycle, IComponent chartProvider)
        
    {
            
    super(nullnull);
            
            IEngine engine 
    = cycle.getEngine();

            _chartService 
    = engine.getService(ChartService.SERVICE_NAME);
            _chartProvider 
    = chartProvider;
        }


    }

    3. IChartProvider
    Service類回調(diào)接口
    public interface IChartProvider
    {
        
    public byte[] getImageBytes();
    }


    4.Page類
    需要實(shí)現(xiàn)IChartProvider回調(diào)接口的getImageBytes()方法
    public abstract SaryPage extends BasePage implements IChartProvider{
     
    private IAsset chartImageAsset;

        
    public IAsset getChartImageAsset() {
            
    if (chartImageAsset == null)
                chartImageAsset 
    = new ChartAsset(getRequestCycle(), this);

            
    return chartImageAsset;
        }

     
    /**
         * This method is invoked by the service (in a seperate request cycle from
         * all the form handling stuff). The {
    @link #getChartImageAsset()} method
         * provides an {
    @link IAsset} that is handled by the {@link ChartService},
         * and the asset encodes the identity of this page.
         * 
         
    */

        
    public byte[] getImageBytes() {
            
    if (getSary().getXp()!=null)
                
    return getSary().getXp();
            
    else
                
    //默認(rèn)規(guī)則,page頁面里若數(shù)據(jù)庫里沒有bytes,則返回null
                return null;
        }


    }


    5.  Html頁面
    <img jwcid="@Image" width="102" height="126"  image="ognl:chartImageAsset"/>

    6. .application文件 注冊(cè)ChartService
    <application name="SaryProject" engine-class="cn.vikings.tapestry.common.SaryEngine">
        
     
    <service name="chart" class="cn.vikings.tapestry.common.chart.ChartService"/>

    </application>

    圖片顯示搞店. 就這么簡單.
    不用再很BT得傳一句HQL語句和圖片ID來,再用JDBC查一次數(shù)據(jù)庫.

    posted @ 2007-10-29 16:56 Vikings 閱讀(694) | 評(píng)論 (0)編輯 收藏

    重溫javaMail


    1。服務(wù)系統(tǒng)不需要驗(yàn)證發(fā)件人的授權(quán)的
    ????Session?session?=?Session.getDefaultInstance(props,?null);?
    2。要驗(yàn)證發(fā)件人的授權(quán)
    ????props.put("mail.smtp.auth",?"true");?
    ????MyAuthenticator?myauth?=?new?MyAuthenticator("你自己的電子信箱",?"你自己的信箱密碼");
    ????Session?session?=?Session.getDefaultInstance(props,?myauth);
    3。同時(shí)發(fā)送多封電子郵件
    Transport.send(message);可以使用下面的代碼來代替
    ??????String?username?=?"你的電子信箱用戶名";
    ??????String?password?=?"你的電子信箱密碼";
    ??????message.saveChanges();?//????implicit?with?send()
    ??????Transport?transport?=?session.getTransport("smtp");
    ??????transport.connect("mail.htf.com.cn",?username,?password);
    ??????transport.sendMessage(message,?message.getAllRecipients());
    ??????transport.close();

    Communication Component,溫習(xí)。
    http://www.china1024.com/news_content.jsp?news_id=1060

    posted @ 2006-11-28 11:33 Vikings 閱讀(176) | 評(píng)論 (0)編輯 收藏

    一些更詳細(xì)的正則表達(dá)式

    匹配中文字符的正則表達(dá)式: [\u4e00-\u9fa5]
    匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]
    匹配空行的正則表達(dá)式:\n[\s| ]*\r
    匹配HTML標(biāo)記的正則表達(dá)式:/<(.*)>.*<\/\1>|<(.*) \/>/
    匹配首尾空格的正則表達(dá)式:(^\s*)|(\s*$)
    匹配Email地址的正則表達(dá)式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
    匹配網(wǎng)址URL正則表達(dá)式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
    匹配帳號(hào)是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
    匹配國內(nèi)電話號(hào)碼:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
    匹配騰訊QQ號(hào):^[1-9]*[1-9][0-9]*$

    原帖: http://cache.baidu.com/c?word=url%2C%D5%FD%3B%D4%F2%3B%B1%ED%B4%EF%CA%BD&url=http%3A//www%2Eshunderen%2Ecom%2Ecn/bbs/dispbbs%2Easp%3Fboardid%3D8%26id%3D529&b=14&a=1&user=baidu

    posted @ 2006-11-27 11:51 Vikings 閱讀(140) | 評(píng)論 (0)編輯 收藏

    Mysql中的日期轉(zhuǎn)換(轉(zhuǎn)帖)

    對(duì)于每個(gè)類型擁有的值范圍以及并且指定日期何時(shí)間值的有效格式的描述見7.3.6 日期和時(shí)間類型。

    這里是一個(gè)使用日期函數(shù)的例子。下面的查詢選擇了所有記錄,其date_col的值是在最后30天以內(nèi):

    mysql> SELECT something FROM table
    WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;

    DAYOFWEEK(date)
    返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。這些索引值對(duì)應(yīng)于ODBC標(biāo)準(zhǔn)。
    mysql> select DAYOFWEEK('1998-02-03');
    -> 3

    WEEKDAY(date)
    返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。
    mysql> select WEEKDAY('1997-10-04 22:23:00');
    -> 5
    mysql> select WEEKDAY('1997-11-05');
    -> 2

    DAYOFMONTH(date)
    返回date的月份中日期,在1到31范圍內(nèi)。
    mysql> select DAYOFMONTH('1998-02-03');
    -> 3

    DAYOFYEAR(date)
    返回date在一年中的日數(shù), 在1到366范圍內(nèi)。
    mysql> select DAYOFYEAR('1998-02-03');
    -> 34

    MONTH(date)
    返回date的月份,范圍1到12。
    mysql> select MONTH('1998-02-03');
    -> 2

    DAYNAME(date)
    返回date的星期名字。
    mysql> select DAYNAME("1998-02-05");
    -> 'Thursday'

    MONTHNAME(date)
    返回date的月份名字。
    mysql> select MONTHNAME("1998-02-05");
    -> 'February'

    QUARTER(date)
    返回date一年中的季度,范圍1到4。
    mysql> select QUARTER('98-04-01');
    -> 2

    WEEK(date)
     
    WEEK(date,first)
    對(duì)于星期天是一周的第一天的地方,有一個(gè)單個(gè)參數(shù),返回date的周數(shù),范圍在0到52。2個(gè)參數(shù)形式WEEK()允許
    你指定星期是否開始于星期天或星期一。如果第二個(gè)參數(shù)是0,星期從星期天開始,如果第二個(gè)參數(shù)是1,
    從星期一開始。
    mysql> select WEEK('1998-02-20');
    -> 7
    mysql> select WEEK('1998-02-20',0);
    -> 7
    mysql> select WEEK('1998-02-20',1);
    -> 8

    YEAR(date)
    返回date的年份,范圍在1000到9999。
    mysql> select YEAR('98-02-03');
    -> 1998

    HOUR(time)
    返回time的小時(shí),范圍是0到23。
    mysql> select HOUR('10:05:03');
    -> 10

    MINUTE(time)
    返回time的分鐘,范圍是0到59。
    mysql> select MINUTE('98-02-03 10:05:03');
    -> 5

    SECOND(time)
    回來time的秒數(shù),范圍是0到59。
    mysql> select SECOND('10:05:03');
    -> 3

    PERIOD_ADD(P,N)
    增加N個(gè)月到階段P(以格式Y(jié)YMM或YYYYMM)。以格式Y(jié)YYYMM返回值。注意階段參數(shù)P不是日期值。
    mysql> select PERIOD_ADD(9801,2);
    -> 199803

    PERIOD_DIFF(P1,P2)
    返回在時(shí)期P1和P2之間月數(shù),P1和P2應(yīng)該以格式Y(jié)YMM或YYYYMM。注意,時(shí)期參數(shù)P1和P2不是日期值。
    mysql> select PERIOD_DIFF(9802,199703);
    -> 11

    DATE_ADD(date,INTERVAL expr type)
     
    DATE_SUB(date,INTERVAL expr type)
     
    ADDDATE(date,INTERVAL expr type)
     
    SUBDATE(date,INTERVAL expr type)
    這些功能執(zhí)行日期運(yùn)算。對(duì)于MySQL 3.22,他們是新的。ADDDATE()和SUBDATE()是DATE_ADD()和DATE_SUB()的同義詞。
    在MySQL 3.23中,你可以使用+和-而不是DATE_ADD()和DATE_SUB()。(見例子)date是一個(gè)指定開始日期的
    DATETIME或DATE值,expr是指定加到開始日期或從開始日期減去的間隔值一個(gè)表達(dá)式,expr是一個(gè)字符串;它可以以
    一個(gè)“-”開始表示負(fù)間隔。type是一個(gè)關(guān)鍵詞,指明表達(dá)式應(yīng)該如何被解釋。EXTRACT(type FROM date)函數(shù)從日期
    中返回“type”間隔。下表顯示了type和expr參數(shù)怎樣被關(guān)聯(lián): type值 含義 期望的expr格式
    SECOND 秒 SECONDS
    MINUTE 分鐘 MINUTES
    HOUR 時(shí)間 HOURS
    DAY 天 DAYS
    MONTH 月 MONTHS
    YEAR 年 YEARS
    MINUTE_SECOND 分鐘和秒 "MINUTES:SECONDS"
    HOUR_MINUTE 小時(shí)和分鐘 "HOURS:MINUTES"
    DAY_HOUR 天和小時(shí) "DAYS HOURS"
    YEAR_MONTH 年和月 "YEARS-MONTHS"
    HOUR_SECOND 小時(shí), 分鐘, "HOURS:MINUTES:SECONDS"
    DAY_MINUTE 天, 小時(shí), 分鐘 "DAYS HOURS:MINUTES"
    DAY_SECOND 天, 小時(shí), 分鐘, 秒 "DAYS HOURS:MINUTES:SECONDS"

    MySQL在expr格式中允許任何標(biāo)點(diǎn)分隔符。表示顯示的是建議的分隔符。如果date參數(shù)是一個(gè)DATE值并且你的計(jì)算僅僅
    包含YEAR、MONTH和DAY部分(即,沒有時(shí)間部分),結(jié)果是一個(gè)DATE值。否則結(jié)果是一個(gè)DATETIME值。

    mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
    -> 1998-01-01 00:00:00
    mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
    -> 1998-01-01
    mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
    -> 1997-12-31 23:59:59
    mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
    INTERVAL 1 SECOND);
    -> 1998-01-01 00:00:00
    mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
    INTERVAL 1 DAY);
    -> 1998-01-01 23:59:59
    mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
    INTERVAL "1:1" MINUTE_SECOND);
    -> 1998-01-01 00:01:00
    mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
    INTERVAL "1 1:1:1" DAY_SECOND);
    -> 1997-12-30 22:58:59
    mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
    INTERVAL "-1 10" DAY_HOUR);
    -> 1997-12-30 14:00:00
    mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
    -> 1997-12-02
    mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
    -> 1999
    mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
    -> 199907
    mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
    -> 20102

    如果你指定太短的間隔值(不包括type關(guān)鍵詞期望的間隔部分),MySQL假設(shè)你省掉了間隔值的最左面部分。例如,
    如果你指定一個(gè)type是DAY_SECOND,值expr被希望有天、小時(shí)、分鐘和秒部分。如果你象"1:10"這樣指定值,
    MySQL假設(shè)日子和小時(shí)部分是丟失的并且值代表分鐘和秒。換句話說,"1:10" DAY_SECOND以它等價(jià)于"1:10" MINUTE_SECOND
    的方式解釋,這對(duì)那MySQL解釋TIME值表示經(jīng)過的時(shí)間而非作為一天的時(shí)間的方式有二義性。如果你使用確實(shí)不正確的日期,
    結(jié)果是NULL。如果你增加MONTH、YEAR_MONTH或YEAR并且結(jié)果日期大于新月份的最大值天數(shù),日子在新月用最大的天調(diào)整。

    mysql> select DATE_ADD('1998-01-30', Interval 1 month);
    -> 1998-02-28

    注意,從前面的例子中詞INTERVAL和type關(guān)鍵詞不是區(qū)分大小寫的。
    TO_DAYS(date)
    給出一個(gè)日期date,返回一個(gè)天數(shù)(從0年的天數(shù))。
    mysql> select TO_DAYS(950501);
    -> 728779
    mysql> select TO_DAYS('1997-10-07');
    -> 729669

    TO_DAYS()不打算用于使用格列高里歷(1582)出現(xiàn)前的值。

    FROM_DAYS(N)
    給出一個(gè)天數(shù)N,返回一個(gè)DATE值。
    mysql> select FROM_DAYS(729669);
    -> '1997-10-07'

    TO_DAYS()不打算用于使用格列高里歷(1582)出現(xiàn)前的值。

    DATE_FORMAT(date,format)
    根據(jù)format字符串格式化date值。下列修飾符可以被用在format字符串中: %M 月名字(January……December)
    %W 星期名字(Sunday……Saturday)
    %D 有英語前綴的月份的日期(1st, 2nd, 3rd, 等等。)
    %Y 年, 數(shù)字, 4 位
    %y 年, 數(shù)字, 2 位
    %a 縮寫的星期名字(Sun……Sat)
    %d 月份中的天數(shù), 數(shù)字(00……31)
    %e 月份中的天數(shù), 數(shù)字(0……31)
    %m 月, 數(shù)字(01……12)
    %c 月, 數(shù)字(1……12)
    %b 縮寫的月份名字(Jan……Dec)
    %j 一年中的天數(shù)(001……366)
    %H 小時(shí)(00……23)
    %k 小時(shí)(0……23)
    %h 小時(shí)(01……12)
    %I 小時(shí)(01……12)
    %l 小時(shí)(1……12)
    %i 分鐘, 數(shù)字(00……59)
    %r 時(shí)間,12 小時(shí)(hh:mm:ss [AP]M)
    %T 時(shí)間,24 小時(shí)(hh:mm:ss)
    %S 秒(00……59)
    %s 秒(00……59)
    %p AM或PM
    %w 一個(gè)星期中的天數(shù)(0=Sunday ……6=Saturday )
    %U 星期(0……52), 這里星期天是星期的第一天
    %u 星期(0……52), 這里星期一是星期的第一天
    %% 一個(gè)文字“%”。

    所有的其他字符不做解釋被復(fù)制到結(jié)果中。

    mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
    -> 'Saturday October 1997'
    mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
    -> '22:23:00'
    mysql> select DATE_FORMAT('1997-10-04 22:23:00',
    '%D %y %a %d %m %b %j');
    -> '4th 97 Sat 04 10 Oct 277'
    mysql> select DATE_FORMAT('1997-10-04 22:23:00',
    '%H %k %I %r %T %S %w');
    -> '22 22 10 10:23:00 PM 22:23:00 00 6'
    MySQL3.23中,在格式修飾符字符前需要%。在MySQL更早的版本中,%是可選的。

    TIME_FORMAT(time,format)
    這象上面的DATE_FORMAT()函數(shù)一樣使用,但是format字符串只能包含處理小時(shí)、分鐘和秒的那些格式修飾符。
    其他修飾符產(chǎn)生一個(gè)NULL值或0。
    CURDATE()
     
    CURRENT_DATE
    以'YYYY-MM-DD'或YYYYMMDD格式返回今天日期值,取決于函數(shù)是在一個(gè)字符串還是數(shù)字上下文被使用。
    mysql> select CURDATE();
    -> '1997-12-15'
    mysql> select CURDATE() + 0;
    -> 19971215

    CURTIME()
     
    CURRENT_TIME
    以'HH:MM:SS'或HHMMSS格式返回當(dāng)前時(shí)間值,取決于函數(shù)是在一個(gè)字符串還是在數(shù)字的上下文被使用。
    mysql> select CURTIME();
    -> '23:50:26'
    mysql> select CURTIME() + 0;
    -> 235026

    NOW()
     
    SYSDATE()
     
    CURRENT_TIMESTAMP
    以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回當(dāng)前的日期和時(shí)間,取決于函數(shù)是在一個(gè)字符串還是在數(shù)字的
    上下文被使用。
    mysql> select NOW();
    -> '1997-12-15 23:50:26'
    mysql> select NOW() + 0;
    -> 19971215235026

    UNIX_TIMESTAMP()
     
    UNIX_TIMESTAMP(date)
    如果沒有參數(shù)調(diào)用,返回一個(gè)Unix時(shí)間戳記(從'1970-01-01 00:00:00'GMT開始的秒數(shù))。如果UNIX_TIMESTAMP()用一
    個(gè)date參數(shù)被調(diào)用,它返回從'1970-01-01 00:00:00' GMT開始的秒數(shù)值。date可以是一個(gè)DATE字符串、一個(gè)DATETIME
    字符串、一個(gè)TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地時(shí)間的一個(gè)數(shù)字。
    mysql> select UNIX_TIMESTAMP();
    -> 882226357
    mysql> select UNIX_TIMESTAMP('1997-10-04 22:23:00');
    -> 875996580

    當(dāng)UNIX_TIMESTAMP被用于一個(gè)TIMESTAMP列,函數(shù)將直接接受值,沒有隱含的“string-to-unix-timestamp”變換。

    FROM_UNIXTIME(unix_timestamp)
    以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp參數(shù)所表示的值,取決于函數(shù)是在一個(gè)字符串
    還是或數(shù)字上下文中被使用。
    mysql> select FROM_UNIXTIME(875996580);
    -> '1997-10-04 22:23:00'
    mysql> select FROM_UNIXTIME(875996580) + 0;
    -> 19971004222300

    FROM_UNIXTIME(unix_timestamp,format)
    返回表示 Unix 時(shí)間標(biāo)記的一個(gè)字符串,根據(jù)format字符串格式化。format可以包含與DATE_FORMAT()函數(shù)列出的條
    目同樣的修飾符。
    mysql> select FROM_UNIXTIME(UNIX_TIMESTAMP(),
    '%Y %D %M %h:%i:%s %x');
    -> '1997 23rd December 03:43:30 x'

    SEC_TO_TIME(seconds)
    返回seconds參數(shù),變換成小時(shí)、分鐘和秒,值以'HH:MM:SS'或HHMMSS格式化,取決于函數(shù)是在一個(gè)字符串還是在數(shù)字
    上下文中被使用。
    mysql> select SEC_TO_TIME(2378);
    -> '00:39:38'
    mysql> select SEC_TO_TIME(2378) + 0;
    -> 3938

    TIME_TO_SEC(time)
    返回time參數(shù),轉(zhuǎn)換成秒。
    mysql> select TIME_TO_SEC('22:23:00');
    -> 80580
    mysql> select TIME_TO_SEC('00:39:38');
    -> 2378

    轉(zhuǎn)帖: http://www.eygle.com/digest/2006/09/mysql_date_convert.html

    posted @ 2006-11-17 13:36 Vikings 閱讀(545) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共4頁: 上一頁 1 2 3 4 下一頁 
    主站蜘蛛池模板: 国产A∨免费精品视频| 免费看又黄又爽又猛的视频软件| 91国内免费在线视频| 亚洲性猛交xx乱| 日韩免费无码一区二区三区| 亚洲国产精品一区二区久久| 亚洲乱色伦图片区小说| 久久青草国产免费观看| 国产午夜影视大全免费观看| 亚洲AV女人18毛片水真多| 国产三级电影免费观看| 特级aa**毛片免费观看| 99久久99久久精品免费看蜜桃 | 亚洲成人在线免费观看| 亚洲精品一区二区三区四区乱码| 免费看男女下面日出水来| 国产亚洲精久久久久久无码77777| 一个人看的www免费高清| 国产高清免费观看| 亚洲av无码国产综合专区| 无码人妻AV免费一区二区三区| 亚洲伦另类中文字幕| 黄+色+性+人免费| 色偷偷亚洲男人天堂| 好男人视频社区精品免费| 国产成人精品日本亚洲语音| 国产亚洲老熟女视频| sss在线观看免费高清| 久久久亚洲精品无码| 中文字幕在线免费播放| 国产亚洲人成网站在线观看| 99re6热视频精品免费观看| 亚洲色大成网站www| 夜夜爽免费888视频| a级毛片免费观看网站| 亚洲欧洲日产国码二区首页| 色www永久免费视频| 国产无遮挡又黄又爽免费网站| 亚洲国产电影在线观看| 国产精品成人免费视频网站京东 | 国产特黄一级一片免费|