Mysql怎么将字符串格式的日期进行储存

#能正常储存
str(datetime.datetime.now())

#报错
info_time = "2022-08-12 09:46:34"

虽说可以储存到varchar里,但是没法正常排序,所以还是需要存到类似DATETIME里,请问该怎么操作呢?

字符串格式的日期格式,在mysql里面本来就是弱化存储的,应该不会报错的,如果报错,看看报错截图

img

img

img

转成Date类型或者时间戳再进行存储,具体方法参考如下:
Python:

    import time
    today = "2022-08-12 08:08:08"
    timearray = time.strptime(today, "%Y-%m-%d %H:%M:%S")
    timeStamp = int(time.mktime(timearray))
    print(timeStamp)

Java:


    /**
     * 将字符串转化为DATE
     *
     * @param dtFormat 格式 或 yyyy-MM-dd或 yyyy-M-dd或 yyyy-M-d或
     *                 yyyy-MM-d或 yyyy-M-dd
     * @return
     */
    public static Date fmtStrToDate(String dtFormat) {
        if (dtFormat == null) {
            return null;
        }
        try {
            if (dtFormat.length() == 9 || dtFormat.length() == 8) {
                String[] dateStr = dtFormat.split("-");
                dtFormat = dateStr[0] + (dateStr[1].length() == 1 ? "-0" : "-")
                        + dateStr[1] + (dateStr[2].length() == 1 ? "-0" : "-")
                        + dateStr[2];
            }
            if (dtFormat.length() != 10 & dtFormat.length() != 19)
                return null;
            if (dtFormat.length() == 10)
                dtFormat = dtFormat + " 00:00:00";
            SimpleDateFormat dateFormat = new SimpleDateFormat(
                    "yyyy-MM-dd HH:mm:ss");
            return dateFormat.parse(dtFormat);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }


    /**
     * 将字符串转化为DATE
     *
     * @param dtFormat 格式 或 yyyy-MM-dd或 yyyy-M-dd或 yyyy-M-d或
     *                 yyyy-MM-d或 yyyy-M-dd
     * @return
     */
    public static Date yyyyMMHHmmssStrToDate(String dtFormat) {
        if (dtFormat == null) {
            return null;
        }
        return cn.hutool.core.date.DateUtil.parse(dtFormat);
    }

    /*
     * 将时间转换为时间戳
     */
    public static String dateToStamp(String s) throws ParseException{
        String res;
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = simpleDateFormat.parse(s);
        long ts = date.getTime();
        res = String.valueOf(ts);
        return res;
    }

欢迎采纳

用datetime将字符串转换为日期对象啊

import datetime
info_time = "2022-08-12 09:46:34"
info_time = datetime.datetime.strptime(info_time, '%Y-%m-%d %H:%M:%S')

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

存到datetime 里面 规范一点

建议转化成时间戳,然后存储,更便于排序和比较。



```java
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 该类提供了 日期转换成字符串 和  字符串转换成日期
 */
public class DateUtil {

    /**
     * 日期转换成字符串格式
     * @param date 日期对象
     * @return 返回字符串格式的日期
     */
    public static String dateToString(Date date){
        SimpleDateFormat df =   new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String strDate = df.format(date);
        return strDate;
    }

    /**
     * 字符串转换成日期
     * @param strDate 字符串格式的日期
     * @return 返回对应的日期
     */
    public static Date stringToDate (String strDate){
        SimpleDateFormat df =   new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = null;
        try {
            date = df.parse(strDate);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

}
方法已经封装 可以直接使用``


```