搜索到关键字为 Date 的相关日志 28 篇: ("[空格]和"+"[加号] 可作搜索分隔符号使用.)

jstl fmt:formatDate的输出格式 cloudy

<fmt:formatDate value="${isoDate}" type="both"/>
2004-5-31 23:59:59

<fmt:formatDate value="${date}" type="date"/>
2004-4-1

<fmt:formatDate value="${isoDate}" type="time"/>
23:59:59

<fmt:formatDate value="${isoDate}" type="date" dateStyle="default"/>
2004-5-31

<fmt:formatDate value="${isoDate}" type="date" dateStyle="short"/>
04-5-31

<fmt:formatDate value="${isoDate}" type="date" dateStyle="medium"/>
...

JMF 播放MP3文件以及获取音轨长度 suny

JMF核心框架支持不同媒体(如:音频输出和视频输出)间的时钟同步。它是一个标准的扩展框架,允许用户制作纯音频流和视频流。详细介绍

   java代码
  1. import java.io.File;  
  2. import java.text.SimpleDateFormat;  
  3. import java.util.Calendar;  
  4.  
  5. import javax.media.Format;  
  6. import javax.media.Manager;  
  7. import javax.media.Player;  
  8. import javax.media.PlugInManager;  
  9. import javax.media.format.AudioFormat;  
  10.  
  11. public class MyTest {  
  12.  
  13.     /**  
  14.      * @param args  
  15.      * @throws Exception  
  16.      */ 
  17.     public static void main(String[] args) throws Exception {  
  18.         MyTest.Play("D:\\test.mp3");  
  19.     }  
  20.  
  21.     // 播放音频文件  
  22.     public static void Play(String fileurl) {  
  23.         try {  
  24.             Format inMp3 = new AudioFormat(AudioFormat.MPEGLAYER3);  
  25.             Format outLinear = new AudioFormat(AudioFormat.LINEAR);  
  26.  
  27.             PlugInManager.addPlugIn(  
  28.                     "com.sun.media.codec.audio.mp3.JavaDecoder",  
  29.                     new Format[] { inMp3 }, new Format[] { outLinear },  
  30.                     PlugInManager.CODEC);  
  31.  
  32.             File file = new File(fileurl);  
  33.             Player player = Manager.createPlayer(file.toURI().toURL());  
  34.             player.start();  
  35.             Thread.sleep(500);  
  36.  
  37.             double seconds = player.getDuration().getSeconds();  
  38.             System.out.println("MediaTime:" + seconds);  
  39.             System.out.println("MediaTime:" + getTime(seconds));  
  40.         } catch (Exception e) {  
  41.             e.printStackTrace();  
  42.         }  
  43.     }  
  44.  
  45.     public static String getTime(double time) {  
  46.         int millis = Integer.parseInt(String.valueOf(Math.round(time)));  
  47.         Calendar cal = Calendar.getInstance();  
  48.         cal.set(00000, millis);  
  49.  
  50.         SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");  
  51.         return sdf.format(cal.getTime());  
  52.     }  
  53.  

不受支持的 SQL 类型 1111 rainy

Sybase 的官方驱动 jConnect4 (链接字符串:jdbc:sybase:Tds:127.0.0.1:5000/xxx) 结合myBatis使用时,发现如下问题,当insert或者update语句的变量含有null值,会报错:

 ### Cause: java.sql.SQLException: JZ006: 捕获到 IO 例外:java.io.IOException: JZ0SL: 不受支持的 SQL 类型 1111。

Cause: java.sql.SQLException: JZ006: Caught IOException: java.io.IOException: JZ0SL: Unsupported SQL type 1111.

由于参数出现了null值,myBatis进行操作的时候,指定jdbcType类型的参数时,mybatis默认设置为jdbcType.OTHER,导致Sybase数据库无法识别此格式。

解决方法:给参数加上jdbcType可解决(注意大小写) 。

比如:
insert into xxx(a,b) values(#{a,jdbcType=VARCHAR}, #{b,jdbcType=DATE})
update xxx set a=#{a,jdbcType=VARCHAR} where id=#{id}

目前jdbcType含有以下类型:

ARRAY(Types.ARRAY),
BIT(Types.BIT),
...

myBatis 存储过程返回值的问题 cloud

今天在调试myBatis调用Sybase数据库的存储过程的时候,出现了如下错误:

org.apache.ibatis.binding.BindingException: Mapper method 'getNextKey' (interface com.xxxxxxx.PackHandleMapper) attempted to return null from a method with a primitive return type (long).
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:37)
at $Proxy17.getNextKey(Unknown Source)
....

报错信息言下之意是返回值为空,可是我的存储过程明明是返回了一个记录集,存储过程如下:

   sql代码
  1. CREATE PROCEDURE prc_seq(@seq_name varchar(20)) 
  2. AS 
  3. BEGIN
  4.     UPDATE seq SET val=val+1 WHERE [name]=@seq_name 
  5.     SELECT val from seq WHERE [name]=@seq_name 
  6. END 
  7. GO 

而且在数据库终端,可以成功执行和返回数据:
exec prc_seq 'xxx'

--------------------------------------------------------------------------------------------------------

经过排查得知,故障是由于update语句引起的,执行上面的语句,会产生两条执行记录,myBatis获取了update语句的执行情况:

1 record(s) affected
1 record(s) selected  [Fetch MetaData: 0/ms]  [Fetch Data: 0/ms] 

解决方法,去掉update语句的执行情况返回,即增加语句:SET NOCOUNT ON

   sql代码
  1. CREATE PROCEDURE prc_seq(@seq_name varchar(20)) 
  2. AS 
  3. BEGIN 
  4.     SET NOCOUNT ON 
  5.     UPDATE seq SET val=val+1 WHERE [name]=@seq_name 
  6.     SELECT val from seq WHERE [name]=@seq_name 
  7. END 
  8. GO 

...

DB2 带update,insert的Function函数 cloud

DB2 的自定义函数,默认不允许修改表数据,有INSERT UPDATE DELETE之类的语句则会报错:

The "MODIFIES SQL DATA" clause has not been specified in the CREATE FUNCTION statement for LANGUAGE SQL function "UMP.SEQ" but an examination of the function body reveals that it should be specified.. SQLCODE=-374, SQLSTATE=428C2, DRIVER=3.63.108

如果需要修改表数据,则需要增加 MODIFIES SQL DATA 的修饰符,并且返回类型必须是TABLE,否则会报错:

An SQL TABLE function must return a table result.. SQLCODE=-20120, SQLSTATE=428F1, DRIVER=3.63.108

完整示例:

CREATE FUNCTION seq(seq_name char (20)) RETURNS TABLE(col bigint) MODIFIES SQL DATA
BEGIN ATOMIC
      UPDATE seq SET val=val+1 WHERE NAME=seq_name;
      RETURN (SELECT val FROM seq WHERE NAME=seq_name);
END

Update from 子查询更新 suny

在更新表数据的时候,我们时常需要把另外一个表的关联值的数据更新到当前表,此时就需要用到子查询了:

MS SQL Server的写法:

update child set parent_name =p.name from child c,parent p where c.parent_id=p.id
或者
update child set parent_name =(select name from parent p where p.id=parent_id)

但是MySQL执行如上语句则会报错:
Error Code: 1093. You can´t specify target table ´xxx´ for update in FROM clause

MySQL不支持子查询更新,MySQL我们应该这样写:

update child c inner join parent p on p.id=c.parent_id set c.parent_name=p.name;

MYSQL中TIMESTAMP类型的使用 suny

MYSQL中TIMESTAMP类型的默认值

MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样。
1、自动UPDATE 和INSERT 到当前的时间:
表:
---------------------------------
...

sql server 锁表 select for update suny

SELECT 语句中“加锁选项”的功能说明

SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能。用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实现预期的效果。 本文介绍了SELECT语句中的各项“加锁选项”以及相应的功能说明。

功能说明: 

NOLOCK(不加锁)
此选项被选中时,SQL Server 在读取或修改数据时不加任何锁。 在这种情况下,用户有可能读取到未完成事务(Uncommited Transaction)或回滚(Roll Back)中的数据, 即所谓的“脏数据”。

HOLDLOCK(保持锁)
此选项被选中时,SQL Server 会将此共享锁保持至整个事务结束,而不会在途中释放。

UPDLOCK(修改锁)
此选项被选中时,SQL Server 在读取数据时使用修改锁来代替共享锁,并将此锁保持至整个事务或命令结束。使用此选项能够保证多个进程能同时读取数据但只有该进程能修改数据。

TABLOCK(表锁)
此选项被选中时,SQL Server 将在整个表上置共享锁直至该命令结束。 这个选项保证其他进程只能读取而不能修改数据。

PAGLOCK(页锁)
此选项为默认选项, 当被选中时,SQL Server 使用共享页锁。

TABLOCKX(排它表锁)
...

Linux yum 命令详解 suny

yum或者Yellow dog Update或者Modified是杜克大学为了提高RPM软件包安装性而开发的一种软件包管理器。Yum可以从众多软件包仓库中搜索软件的依赖关系,因此可以减少由于依赖关系带来的问题。

1.安装软件包:
yum install package
yum localinstall package 从本机目录安装软件包
yum groupinstall group 安装某个组件的全部软件包

2.更新软件包:
yum update package
yum check-update 列出所有可更新的软件包
...

CentOS定时同步系统时间 suny

      使用Linux.VPS第二天,发现系统时间不正确,手动修改或者同步正确一次后,运行半天发觉时间又快了几分钟,反正是运行得越久就越快,难道VPS穿越啦?

      和VPS管理员沟通无果,再上网搜索一番后,决定使用定时器自动同步时间算啦。

ssh执行命令:
#crontab -e
执行后加入一行:(和vi命令一样,按i进入编辑模式,Esc返回命令模式,:w保存修改,:q退出)
*/30 * * * * /usr/sbin/ntpdate us.pool.ntp.org >> /var/log/crontab.log 2>&1
数字30表示30分钟执行一次,保存和退出后,还需要重启定时任务器才行哦:
#service crond restart

后面的>> /var/log/crontab.log 表示把定时执行情况写入到日志文件中去,方便查看有无异常。

注意utpdate要写完整路径,网上有些人的例子没写完整路径会导致以下异常:
...


Total:281233 Pages