原来用MySQL数据库的,时间列是用datatime的 显示时间格式是YYYY-MM-DD hh:mm:ss的
现在换PostgreSQL数据库了 时间的类型我查了下 有timestamp with time zone类型和timestamp without time zone类型
timestamp with time zone类型显示的是"2010-04-13 09:37:11.89+09" 最后有个时区的显示,格式也不对
timestamp without time zone类型显示的是虽然是YYYY-MM-DD hh:mm:ss格式,
但是我现在假如设定了时间列的类型为timestamp without time zone,我更新现在时间update xx set dt=now() 结果秒的位置出来了好几位 比如2010-04-13 09:37:11.265
我知道可以用 SET updatedt= CAST(to_char(now(), 'YYYY/MM/DD HH24:MI:SS') As timestamp without time zone)
这种方式来转换,但是有没有能够在建表的时候 能够和MySQL的datatime一样的类型呢 更新的时候set dt=now() 时间也是YYYY-MM-DD hh:mm:ss格式
主要是我不太想动SQL文了 如果要这么转换太麻烦了
请教大虾们~~
现在换PostgreSQL数据库了 时间的类型我查了下 有timestamp with time zone类型和timestamp without time zone类型
timestamp with time zone类型显示的是"2010-04-13 09:37:11.89+09" 最后有个时区的显示,格式也不对
timestamp without time zone类型显示的是虽然是YYYY-MM-DD hh:mm:ss格式,
但是我现在假如设定了时间列的类型为timestamp without time zone,我更新现在时间update xx set dt=now() 结果秒的位置出来了好几位 比如2010-04-13 09:37:11.265
我知道可以用 SET updatedt= CAST(to_char(now(), 'YYYY/MM/DD HH24:MI:SS') As timestamp without time zone)
这种方式来转换,但是有没有能够在建表的时候 能够和MySQL的datatime一样的类型呢 更新的时候set dt=now() 时间也是YYYY-MM-DD hh:mm:ss格式
主要是我不太想动SQL文了 如果要这么转换太麻烦了
请教大虾们~~
应该不影响你的应用,大部分的客户端软件表示时间都精确到秒,所以传送到客户端都会截取到秒。
就如上面人说的 我把小数位的位数设置成0 更新也没问题了
和大家分享下吧
如果大家用pgAdmin工具创建表的话 添加列的中哟有个长度设置成0就可以了
time ,timestamp 和interval 接受一个可选的精度值 p,这个精度值声明在秒域后面小数点之后保留的位数。 缺省的时候在精度上是没有明确的绑定的, p 有用的范围对 timestamp和 interval 是从 0 到大约 6。 对于 time 类型,如果使用了八字节的整数存储,那么 p 允许的范围是从 0 到 6,如果使用的是浮点数存储,那么这个范围是 0 到 10。参考:
http://www.pgsqldb.org/pgsqldoc-8.1c/datatype-datetime.html
这样就OK了