diff --git a/lbry/wallet/server/leveldb.py b/lbry/wallet/server/leveldb.py
index 51a397c84..f39b5ceda 100644
--- a/lbry/wallet/server/leveldb.py
+++ b/lbry/wallet/server/leveldb.py
@@ -667,8 +667,8 @@ class LevelDB:
             'tx_num': claim.tx_num,
             'tx_nout': claim.position,
             'amount': claim.amount,
-            'timestamp': 0,  # TODO: fix
-            'creation_timestamp': 0,  # TODO: fix
+            'timestamp': self.estimate_timestamp(claim.height),
+            'creation_timestamp': self.estimate_timestamp(claim.creation_height),
             'height': claim.height,
             'creation_height': claim.creation_height,
             'activation_height': claim.activation_height,
@@ -713,8 +713,10 @@ class LevelDB:
             value['duration'] = reposted_duration
         elif metadata.is_stream and (metadata.stream.video.duration or metadata.stream.audio.duration):
             value['duration'] = metadata.stream.video.duration or metadata.stream.audio.duration
-        if metadata.is_stream and metadata.stream.release_time:
-            value['release_time'] = metadata.stream.release_time
+        if metadata.is_stream:
+            value['release_time'] = metadata.stream.release_time or value['creation_timestamp']
+        elif metadata.is_repost or metadata.is_collection:
+            value['release_time'] = value['creation_timestamp']
         return value
 
     async def all_claims_producer(self, batch_size=500_000):
@@ -871,6 +873,11 @@ class LevelDB:
         assert len(headers) - 1 == self.db_height, f"{len(headers)} vs {self.db_height}"
         self.headers = headers
 
+    def estimate_timestamp(self, height: int) -> int:
+        if height < len(self.headers):
+            return struct.unpack('<I', self.headers[height][100:104])[0]
+        return int(160.6855883050695 * height)
+
     async def open_dbs(self):
         if self.db:
             return
diff --git a/tests/integration/blockchain/test_claim_commands.py b/tests/integration/blockchain/test_claim_commands.py
index f60fcb455..448c6c721 100644
--- a/tests/integration/blockchain/test_claim_commands.py
+++ b/tests/integration/blockchain/test_claim_commands.py
@@ -1764,6 +1764,15 @@ class StreamCommands(ClaimTestCase):
         self.assertItemCount(await self.daemon.jsonrpc_claim_list(account_id=self.account.id), 3)
         self.assertItemCount(await self.daemon.jsonrpc_claim_list(account_id=account2_id), 1)
 
+        self.assertEqual(3, len(await self.claim_search(release_time='>0', order_by=['release_time'])))
+        self.assertEqual(3, len(await self.claim_search(release_time='>=0', order_by=['release_time'])))
+        self.assertEqual(4, len(await self.claim_search(order_by=['release_time'])))
+        self.assertEqual(3, len(await self.claim_search(claim_type='stream', order_by=['release_time'])))
+        self.assertEqual(1, len(await self.claim_search(claim_type='channel', order_by=['release_time'])))
+        self.assertEqual(1, len(await self.claim_search(release_time='>=123456', order_by=['release_time'])))
+        self.assertEqual(1, len(await self.claim_search(release_time='>123456', order_by=['release_time'])))
+        self.assertEqual(2, len(await self.claim_search(release_time='<123457', order_by=['release_time'])))
+
     async def test_setting_fee_fields(self):
         tx = await self.out(self.stream_create('paid-stream'))
         txo = tx['outputs'][0]