diff --git a/src/caosadvancedtools/table_importer.py b/src/caosadvancedtools/table_importer.py
index 55b1d1a1c67c01038b2946ae38928adc229012ae..04c8ea23b19ee0cc055dc58b69f1b3d6fecd1b55 100755
--- a/src/caosadvancedtools/table_importer.py
+++ b/src/caosadvancedtools/table_importer.py
@@ -91,6 +91,34 @@ def date_converter(val, fmt="%Y-%m-%d"):
     return datetime_converter(val, fmt=fmt).date()
 
 
+def incomplete_date_converter(val, fmts={"%Y-%m-%d": "%Y-%m-%d",
+                                         "%Y-%m": "%Y-%m", "%Y": "%Y"}):
+    """ if the value is already a datetime, it is returned otherwise it
+    converts it using format string
+
+    Parameters
+    ----------
+    val : str
+        Candidate value for one of the possible date formats.
+    fmts : dict, optional
+        Dictionary containing the possible (incomplete) date formats:
+        keys are the formats into which the input value is tried to be
+        converted, values are the possible input formats.
+    """
+
+    for to, fro in fmts.items():
+        try:
+            date = datetime.strptime(val, fro)
+
+            return date.strftime(to)
+
+        except ValueError:
+            pass
+    raise RuntimeError(
+        "Value {} could not be converted with any format string".format(
+            val))
+
+
 def win_path_list_converter(val):
     """
     checks whether the value looks like a list of windows paths and converts
diff --git a/unittests/test_table_importer.py b/unittests/test_table_importer.py
index 0232128832c4a43c18927eecc6612daa5de368f2..69983017a77082887181d14ea12f4f876e42aa3d 100644
--- a/unittests/test_table_importer.py
+++ b/unittests/test_table_importer.py
@@ -17,11 +17,11 @@
 # along with this program. If not, see <https://www.gnu.org/licenses/>.
 
 
+import datetime
 import os
 import unittest
 from functools import partial
 from tempfile import NamedTemporaryFile
-import datetime
 
 import numpy as np
 import pandas as pd
@@ -29,6 +29,7 @@ from caosadvancedtools.datainconsistency import DataInconsistencyError
 from caosadvancedtools.table_importer import (XLSImporter, assure_name_format,
                                               date_converter,
                                               datetime_converter,
+                                              incomplete_date_converter,
                                               win_path_converter,
                                               win_path_list_converter,
                                               yes_no_converter)
@@ -87,6 +88,24 @@ class ConverterTest(unittest.TestCase):
         assert df.shape[0] == 2
         assert df.a.iloc[0] == df.b.iloc[0] == df.c.iloc[0]
 
+    def test_inc_date(self):
+        incomplete_date_converter("2020", fmts={"%Y": "%Y"}) == "2020"
+        incomplete_date_converter("02/2020",
+                                  fmts={"%Y": "%Y", "%Y-%m": "%m/%Y"}
+                                  ) == "2020-02"
+        incomplete_date_converter("02/02/2020",
+                                  fmts={"%Y": "%Y", "%Y-%m": "%m/%Y",
+                                        "%Y-%m-%d": "%d/%m/%Y"}
+                                  ) == "2020-02-02"
+        incomplete_date_converter("2020",
+                                  fmts={"%Y": "%Y", "%Y-%m": "%m/%Y",
+                                        "%Y-%m-%d": "%d/%m/%Y"}
+                                  ) == "2020"
+        self.assertRaises(RuntimeError,
+                          incomplete_date_converter,
+                          "2020e",
+                          fmts={"%Y": "%Y"})
+
 
 class XLSImporterTest(unittest.TestCase):
     def setUp(self):