有效存储小时,分钟和秒

时间:2018-12-09 02:13:21

标签: postgresql time types

使用PostgreSQL数据库,最好的存储时间的方法是小时,分钟和秒。例如。 <40> 21秒中为“ 40:21”。

示例数据:

import * as React from 'react';
import { Text, View, StyleSheet, Button, FlatList } from 'react-native';

class ChatUserCard extends React.Component {
  render() {
    return (
      <View style={styles.cardStyle}> 
          <Text style={styles.itemStyle}>{this.props.username}</Text>
          <Button style={styles.buttonStyle}
                  title='Chat'
                  onPress={this.startChat} />
      </View>
    )
  }
}

export default class App extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      users: [
        { key: 123, uid: 123, username: 'taco' },
        { key: 456, uid: 456, username: 'cat' }
      ]
    }
  }
  render() {
    return (
      <View style={styles.container}>
        <FlatList style={{flex:1, backgroundColor:'red'}}
           data = {this.state.users}
           keyExtractor={item => item.key.toString()}
           renderItem={({item}) => {
               return (
                   <ChatUserCard key={item.uid} username={item.username} />
               )
           }}
        />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1
  },
});

2 个答案:

答案 0 :(得分:2)

听起来您想存储一段时间或间隔。 PostgreSQL有一种特殊的间隔类型来存储时间长度,例如

SELECT interval'2 hours 3 minutes 20 seconds';

可以将其添加到时间戳中以形成新的时间戳,也可以相乘(以使(2 * interval'2 hours')= interval'4 hours'。间隔类型似乎是为您量身定制的情况。

答案 1 :(得分:1)

time显然是存储时间的最佳选择。它规定了每天的时间范围(00:00:0024:00:00),占用 8个字节
time(0)禁止小数秒。

interval 允许任意间隔,甚至可以是负间隔,甚至可以是正负组合,例如'1 month - 3 seconds'-不太符合您的描述-并且占用< strong> 16字节。参见:

如果要优化存储大小,请使其成为 integer 4个字节),以秒为单位。来回转换time

SELECT EXTRACT(epoch FROM time '18:55:28');  -- 68128 (int)    
SELECT time '00:00:01' * 68128;              -- '18:55:28' (time)