diff --git a/data/CRMEntity.php b/data/CRMEntity.php
index 041febdb4b30334eed58687ff28bb5d25d3e3921..bfd70408c7aa5c686885c9870e6f70931478e324 100644
--- a/data/CRMEntity.php
+++ b/data/CRMEntity.php
@@ -522,7 +522,7 @@ class CRMEntity {
 				} elseif ($uitype == 5 || $uitype == 6 || $uitype == 23) {
 					//Added to avoid function call getDBInsertDateValue in ajax save
 					if (isset($current_user->date_format) && !$ajaxSave) {
-						$fldvalue = getValidDBInsertDateValue($this->column_fields[$fieldname]);
+						$fldvalue = getValidDBInsertDateTimeValue($this->column_fields[$fieldname]);
 					} else {
 						$fldvalue = $this->column_fields[$fieldname];
 					}
diff --git a/include/fields/DateTimeField.php b/include/fields/DateTimeField.php
index 4425c3a36170f80b3d955aac46106cc95e4cb0af..db58cbeab3b289015722a768a9fcd1365169136c 100644
--- a/include/fields/DateTimeField.php
+++ b/include/fields/DateTimeField.php
@@ -80,24 +80,16 @@ class DateTimeField {
     public static function convertToDBFormat($date, $user = null)
     {
         global $current_user;
-        if (empty($user)) {
-            $user = $current_user;
-        }
-        if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2}$/", $date) == 1) {
-            return $date;
-        }
-        $format = $user->date_format;
-        if (empty($format)) {
-            if (false !== strpos($date, '.')) {
-				$format = 'dd.mm.yyyy';
-			} else if (false !== strpos($date, '/')) {
-				$format = 'dd/mm/yyyy';
-            } else {
-                $format = 'dd-mm-yyyy';
-            }
-        }
+		if(empty($user)) {
+			$user = $current_user;
+		}
+
+		$format = $current_user->date_format;
+		if(empty($format)) {
+			$format = 'dd-mm-yyyy';
+		}
 
-        return self::__convertToDBFormat($date, $format);
+		return self::__convertToDBFormat($date, $format);
     }
 
     /**
@@ -109,53 +101,25 @@ class DateTimeField {
      */
     public static function __convertToDBFormat($date, $format)
     {
-        $dbDate = '';
-
-        if (empty($format)) {
-            if (false !== strpos($date, '.')) {
-				$format = 'dd.mm.yyyy';
-			} else if (false !== strpos($date, '/')) {
-				$format = 'dd/mm/yyyy';
-            } else {
-                $format = 'dd-mm-yyyy';
-            }
-        }
-
-        switch ($format) {
-            case 'dd.mm.yyyy':
-                list($d, $m, $y) = explode('.', $date);
-				break;
-			case 'mm.dd.yyyy':
-                list($m, $d, $y) = explode('.', $date);
-				break;
-			case 'yyyy.mm.dd':
-                list($y, $m, $d) = explode('.', $date);
-				break;
-			case 'dd/mm/yyyy':
-				list($d, $m, $y) = explode('/', $date);
-				break;
-			case 'mm/dd/yyyy':
-				list($m, $d, $y) = explode('/', $date);
-				break;
-			case 'yyyy/mm/dd':
-				list($y, $m, $d) = explode('/', $date);
-				break;
-            case 'dd-mm-yyyy':
-                list($d, $m, $y) = explode('-', $date);
-                break;
-            case 'mm-dd-yyyy':
-                list($m, $d, $y) = explode('-', $date);
-                break;
-            case 'yyyy-mm-dd':
-                list($y, $m, $d) = explode('-', $date);
-                break;
-        }
-
-        if (!empty($y) && !empty($m) && !empty($d)) {
-            $dbDate = $y . '-' . $m . '-' . $d;
-        }
+        if ($format == '') {
+			$format = 'dd-mm-yyyy';
+		}
+		$dbDate = '';
+        $dateFormats = ['dd-mm-yyyy', 'dd/mm/yyyy', 'dd.mm.yyyy'];
+		if (in_array($format, $dateFormats)) {
+			list($d, $m, $y) = explode('-', $date);
+		} elseif ($format == 'mm-dd-yyyy') {
+			list($m, $d, $y) = explode('-', $date);
+		} elseif ($format == 'yyyy-mm-dd') {
+			list($y, $m, $d) = explode('-', $date);
+		}
 
-        return $dbDate;
+		if (!$y && !$m && !$d) {
+			$dbDate = '';
+		} else {
+			$dbDate = $y . '-' . $m . '-' . $d;
+		}
+		return $dbDate;
     }
 
 	/**
diff --git a/include/utils/utils.php b/include/utils/utils.php
index fd46ecd56a0221215a96a1177a30d1737b4a9a99..0029639a19bed5fe14258690e624a21a7f6f977d 100755
--- a/include/utils/utils.php
+++ b/include/utils/utils.php
@@ -1786,9 +1786,32 @@ function isRecordExists($recordId) {
 function getValidDBInsertDateValue($value) {
 	global $log;
 	$log->debug("Entering getValidDBInsertDateValue(".$value.") method ...");
-	
-    $insert_date = DateTimeField::convertToDBFormat($value);
-	
+	$value = trim($value);
+	$delim = array('/','.');
+	foreach ($delim as $delimiter){
+		$x = strpos($value, $delimiter);
+		if($x === false) continue;
+		else{
+			$value=str_replace($delimiter, '-', $value);
+			break;
+		}
+	}
+	list($y,$m,$d) = explode('-',$value);
+	if(strlen($y) == 1) $y = '0'.$y;
+	if(strlen($m) == 1) $m = '0'.$m;
+	if(strlen($d) == 1) $d = '0'.$d;
+	$value = implode('-', array($y,$m,$d));
+
+	if(strlen($y)<4){
+		$insert_date = DateTimeField::convertToDBFormat($value);
+	} else {
+		$insert_date = $value;
+	}
+
+	if (preg_match("/^[0-9]{2,4}[-][0-1]{1,2}?[0-9]{1,2}[-][0-3]{1,2}?[0-9]{1,2}$/", $insert_date) == 0) {
+		return '';
+	}
+
 	$log->debug("Exiting getValidDBInsertDateValue method ...");
 	return $insert_date;
 		}
@@ -1796,7 +1819,8 @@ function getValidDBInsertDateValue($value) {
 function getValidDBInsertDateTimeValue($value) {
 	$value = trim($value);
 	$valueList = explode(' ',$value);
-	if(count($valueList) == 2) {
+    //checking array count = 3 if datatime format is 12hr.
+	if(count($valueList) == 2 || count($valueList) == 3) {
 		$dbDateValue = getValidDBInsertDateValue($valueList[0]);
 		$dbTimeValue = $valueList[1];
 		if(!empty($dbTimeValue) && strpos($dbTimeValue, ':') === false) {