许鹏程
2024-01-15 36dc14af5a78be3b3eb941ddc13a22d3aaf1fe3a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.product.data.center.utils;
 
import org.apache.commons.lang3.StringUtils;
 
import java.text.SimpleDateFormat;
import java.util.Date;
 
/**
 * Copyright © 6c
 *
 * @Date 2022年07月13日 17:55
 * @Author 6c
 * @Description
 */
public class SqlTransferUtil {
    public static final String MINUTE = "minute";
 
    /**
     * 字符串转为时间
     * @param dbType        数据库库类型 0 ORACLE 1 MYSQL 2 SQLSERVER 3 INFORMIX
     * @param date
     * @return
     */
    public static String str2Date(int dbType, Object date) {
        if (dbType == -1 || date == null) {
            return "";
        }
        String dateStr;
        if (date instanceof Date) {
            dateStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date);
        } else {
            dateStr = date.toString();
        }
        StringBuilder result = new StringBuilder(32);
        if (dbType == 0) {
            result.append(" TO_DATE('").append(dateStr).append("','yyyy-mm-dd hh24:mi:ss')");
        } else if (dbType == 1) {
            result.append(" str_to_date('").append(dateStr).append("','%Y-%m-%d %H:%i:%s')");
        } else {
            result.append("暂不支持的数据库类型");
        }
        return result.toString();
    }
 
    /**
     * 日期加减
     * @param dbType        数据库类型
     * @param dateStr       日期字符串,需要先经过str2Date方法的处理
     * @param value         值,正数为增加,负数为减少
     * @param unit          单位
     * @return
     */
    public static String addDate(int dbType, String dateStr, int value, String unit) {
        if (dbType == -1 || StringUtils.isEmpty(dateStr)) {
            return "";
        }
        StringBuilder result = new StringBuilder(32);
        if (dbType == 0) {
            result.append(" ").append(dateStr).append("+(").append(value).append(")");
            if (MINUTE.equals(unit)) {
                result.append("/(24*60)");
            }
        } else if (dbType == 1) {
            result.append(" date_add(").append(dateStr).append(",interval ").append(value).append(" ").append(unit).append(")");
        } else {
            result.append("暂不支持的数据库类型");
        }
        return result.toString();
    }
}