0 Query Results Should Disable Create KML 
**Describe the bug**
Title. 
When the blank KML is imported to Google Earth you just get a blank project. Which I assume, would be confusing as users will wonder whether it's a Specify issue or a Google Earth issue

**To Reproduce**
Steps to reproduce the behavior:
1. Run a Longitude and Latitude Query which has 0 Results
2. Click on `Create KML`
3. Download the empty KML and import it in Google Earth (or see screenshots)
4. See error

**Expected behavior**
It shouldn't let you export an empty KML. 
**Screenshots**

<img width="1792" alt="Screenshot 2023-05-19 at 3 16 14 PM" src="https://github.com/specify/specify7/assets/53784701/55693586-a256-40b6-97d0-7a595478cc0f">
<img width="1791" alt="Screenshot 2023-05-19 at 3 16 26 PM" src="https://github.com/specify/specify7/assets/53784701/4024d9f0-a3a1-4915-9e74-7962cf38526e">
<img width="1792" alt="Screenshot 2023-05-19 at 3 16 43 PM" src="https://github.com/specify/specify7/assets/53784701/86a98c70-a89f-462b-a2c8-a5f4f0e20495">
<img width="1792" alt="Screenshot 2023-05-19 at 3 18 09 PM" src="https://github.com/specify/specify7/assets/53784701/acfbefdf-32fe-4891-a798-d701d0bdbe96">

diff --git a/specifyweb/frontend/js_src/lib/components/QueryBuilder/Export.tsx b/specifyweb/frontend/js_src/lib/components/QueryBuilder/Export.tsx
index 0b4953ac0..560971688 100644
--- a/specifyweb/frontend/js_src/lib/components/QueryBuilder/Export.tsx
+++ b/specifyweb/frontend/js_src/lib/components/QueryBuilder/Export.tsx
@@ -100,9 +100,14 @@ export function QueryExportButtons({
     return resultToExport.join('\n');
   }
 
+  const containsResults =
+    (results.current?.length ?? 0) > 0 &&
+    results.current?.every((row) => row !== undefined);
+
   const canUseKml =
     (baseTableName === 'Locality' ||
       fields.some(({ mappingPath }) => mappingPath.includes('locality'))) &&
+    containsResults &&
     hasPermission('/querybuilder/query', 'export_kml');
 
   return (
@@ -124,7 +129,7 @@ export function QueryExportButtons({
           {queryText.missingCoordinatesForKmlDescription()}
         </Dialog>
       ) : undefined}
-      {hasPermission('/querybuilder/query', 'export_csv') && (
+      {containsResults && hasPermission('/querybuilder/query', 'export_csv') && (
         <QueryButton
           disabled={fields.length === 0}
           showConfirmation={showConfirmation}
diff --git a/specifyweb/stored_queries/views.py b/specifyweb/stored_queries/views.py
index 27d0ee9f0..0e1a88682 100644
--- a/specifyweb/stored_queries/views.py
+++ b/specifyweb/stored_queries/views.py
@@ -35,6 +35,31 @@ def value_from_request(field, get):
     except KeyError:
         return None
 
+"""Determines how the date part of Query Export file names should be formatted
+View the Python documentation for a comprehensive list of Format Codes:
+    https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes
+
+The frontend manually downloads the file when query rows are selected
+Preferably, this format should remain consistent with the front-end export name
+
+
+Current Format Example: 
+    Wed Jun 07 2023
+"""
+QUERY_EXPORT_DATE_FORMAT = "%a %b %d %Y"
+
+def format_export_file_name(query_name: str, file_extension = ''):
+    """Prepares and returns a file name for a given <query_name>
+    
+    Returns the date in the following fomrat: '<query_name> - {date_as_formatted_string}'
+        Example: New Query - Wed Jun 07 2023 
+    If a <file_extension> is given, concatenate the extension to the string with a '.'
+    """
+    date_as_string = datetime.now().strftime(QUERY_EXPORT_DATE_FORMAT)
+    non_extension = "%s - %s" % (query_name, date_as_string)
+    return non_extension if not file_extension else non_extension + ".%s" % file_extension
+  
+
 @require_GET
 @login_maybe_required
 @never_cache
@@ -102,10 +127,10 @@ def export_csv(request):
         logger.debug('forcing collection to %s', collection.collectionname)
     else:
         collection = request.specify_collection
+    
+    file_name = format_export_file_name(spquery['name'], "csv")
 
-    filename = 'query_results_%s.csv' % datetime.now().isoformat()
-
-    thread = Thread(target=do_export, args=(spquery, collection, request.specify_user, filename, 'csv', None))
+    thread = Thread(target=do_export, args=(spquery, collection, request.specify_user, file_name, 'csv', None))
     thread.daemon = True
     thread.start()
     return HttpResponse('OK', content_type='text/plain')
@@ -133,9 +158,9 @@ def export_kml(request):
     else:
         collection = request.specify_collection
 
-    filename = 'query_results_%s.kml' % datetime.now().isoformat()
+    file_name = format_export_file_name(spquery['name'], "kml")
 
-    thread = Thread(target=do_export, args=(spquery, collection, request.specify_user, filename, 'kml', the_host))
+    thread = Thread(target=do_export, args=(spquery, collection, request.specify_user, file_name, 'kml', the_host))
     thread.daemon = True
     thread.start()
     return HttpResponse('OK', content_type='text/plain')
['specifyweb/frontend/js_src/lib/components/QueryBuilder/Export.tsx', 'specifyweb/stored_queries/views.py']