之前是一直在用datetime类型(db)精度到yyyy-MM-dd HH:mm:ss 或者 date类型 精度到 yyyy-MM-dd 用了框架自动注入功能,自己也没去深入没去管他的set赋值值等等东西。  等到要查询一些有关于时间线的记录时,也就利用了数据库的时间函数来比较得出数据

但是这段时间没用框架,原生态的MVC模式,从数据的封装到业务逻辑的实现 方方面面都要考虑,从php里的time字段的设计是long型到sql查询的效率,相对来说都有一定的优势,当然遇到的问题也是基础、简单、多而杂。

在处理时间格式时出现了一些小问题。1. yyyy-MM-dd HH:mm:ss精度 可以直接new Date().getTime()---long  2. yyyy-MM-dd 精度 貌似只能利用Calendar日期类来转成long型的

具体转换方法如下:

/**
* 转换日期为compute_time
* @param start 获取时间范围 0 每日0时0分,1当前时间 ,2每日23时59分
* @param addDate 以当前日期为基准增减的时间
* @return
*/
public static long converDateToDBTime(int start,int addDate)
{
Calendar cal=java.util.Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.DATE,addDate);
Date nextDate=cal.getTime();
int y =nextDate.getYear();
int m = nextDate.getMonth();
int n = nextDate.getDate();
long ret =0;
switch (start){
case 0:
ret = new Date(y,m,n,0,0).getTime()/1000;
break;
case 1:
ret = nextDate.getTime()/1000;
break;
case 2:
ret = new Date(y,m,n,23,59,59).getTime()/1000;
break;
}
return ret;
}

附带DateUtil常用操作:

package com.nubb.util;

/**
* Created by IntelliJ IDEA.
* User: leo
* Date: 2008-10-25
* Time: 15:56:43
* Mascot Leo & featherheanven@gmail.com
*/
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
import java.util.Calendar; public class DateUtil
{
private static final TimeZone timeZone = TimeZone.getTimeZone("GMT+08:00"); private static final String format1 = "yyyy-MM-dd HH:mm:ss"; private static final String format2 = "yyyy-MM-dd"; private static final String format3 = "HH:mm"; private static final String format4 = "MM-dd HH:mm"; private static final String format5 = "M月d日"; private static final SimpleDateFormat dateFormat1 = new SimpleDateFormat(format1); private static final SimpleDateFormat dateFormat2 = new SimpleDateFormat(format2); private static final SimpleDateFormat dateFormat3 = new SimpleDateFormat(format3); private static final SimpleDateFormat dateFormat4 = new SimpleDateFormat(format4); private static final SimpleDateFormat dateFormat5 = new SimpleDateFormat(format5); public DateUtil()
{ } /*
* 根据所选的时间格式将String类型的时间转换为long类型
* @param String time, int format
* @return long
*/ public static long getTimeStamp(String time, int format) throws ParseException
{
if (format == 1)
{
return dateFormat1.parse(time).getTime();
}
else if (format == 2)
{
return dateFormat2.parse(time).getTime();
}
else
{
return dateFormat3.parse(time).getTime();
}
}
public static long getTimeStamp(String time,int format,long defaulttime)
{
try{
return getTimeStamp(time,format);
}catch(Exception e){
return defaulttime;
}
} /*
* 根据所选的时间格式将long类型的时间转换为String类型 数据库的unixtime*1000 = 系统的timestamp
* @param long time, int format
* @return String
*/
public static String getTimeFromDB(long timeStamp, int format) throws ParseException
{
return getTime(timeStamp*1000,format);
}
public static String getTime(long timeStamp, int format) throws ParseException
{
if (format == 1)
{
return dateFormat1.format(new Date(timeStamp));
}
else if (format == 2)
{
return dateFormat2.format(new Date(timeStamp));
}
else if(format == 3)
{
return dateFormat3.format(new Date(timeStamp));
}
else if(format == 4){
return dateFormat4.format(new Date(timeStamp));
}
else if(format == 5){
return dateFormat5.format(new Date(timeStamp));
}
else {
return dateFormat1.format(new Date(timeStamp));
}
} /**
* 获取默认时间
*
* @return date
*/
public static Date getDefaultAsDate()
{
return new Date(0);
} /**
* J
* 获取默认时间
*
* @return long
*/
public static long getDefaultAsLong()
{
return 0L;
} /**
* J
* 获取当前时间
*
* @return date
*/
public static Date getNowAsDate()
{
return new Date();
} /**
* 获取当前时间
*
* @param format 格式
* @param def 默认
* @param def 默认
* @return
*/
public static String getNowAsString(String format, String def)
{
return formatDateAsString(new Date(), format, def);
} /**
* J
* 获取当前时间
*
* @return long
*/
public static long getNowAsLong()
{
return (new Date()).getTime();
} /**
* 将一个字符串的日期描述转换为java.util.Date对象
*
* @param strDate 字符串的日期描述
* @param format 字符串的日期格式,比如:“yyyy-MM-dd HH:mm”
* @return 字符串转换的日期对象java.util.Date
*/
public static Date getDateFromString(String strDate, String format)
{
if (strDate == null || strDate.trim().equals(""))
{
return getDefaultAsDate();
} SimpleDateFormat formatter = new SimpleDateFormat(format);
// formatter.setTimeZone(timeZone); Date date;
try
{
date = formatter.parse(strDate);
}
catch (ParseException e)
{
date = getDefaultAsDate();
} return date;
} /**
* J
* 格式化日期 默认 0000-00-00
*
* @param date
* @param s
* @return 带默认值的时间格式化字符串
*/
public static String formatDateAsString(Date date, String s, String def)
{
String ret = def;
if (date != null && !"".equals(s))
{
try
{
ret = (new SimpleDateFormat(s)).format(date);
}
catch (Exception e)
{
ret = def;
}
}
return ret;
} /**
* V
* 传入秒数,返回如 XX:XX:XX 的一串文字
*
* @param second
* @return 返回 XX:XX:XX 的文字
*/
public static String getTimeAsString(int second)
{
String ret = "";
int ss = second;
int HH = 0;
int mm = 0; HH = ss / 60 / 60;
if (HH > 0)
{
ss = ss - (HH * 60 * 60);
if (HH >= 10)
ret = HH + ":";
else
ret = "0" + HH + ":";
}
mm = ss / 60;
if (mm > 0)
{
ss = ss - (mm * 60);
if (mm >= 10)
ret += mm + ":";
else
ret += "0" + mm + ":";
}
else
{
ret += "00" + ":";
}
if (ss >= 10)
ret += ss;
else
ret += "0" + ss; return ret;
} /**
* V
* 传入一串时间文字如 XX:XX:XX,返回秒数
*
* @param time
* @return 返回秒数
*/
public static int getStringAsSeord(String time)
{
int ret = 0;
if (time != null && !"".equals(time.trim()))
{
try
{
String[] times = time.trim().split(":");
if (times.length == 3)
{
ret = ret + Integer.parseInt(times[0]) * 60 * 60; // 时
ret = ret + Integer.parseInt(times[1]) * 60; // 分
ret = ret + Integer.parseInt(times[2]); // 秒 }
else if (times.length == 2)
{
ret = ret + Integer.parseInt(times[0]) * 60; // 分
ret = ret + Integer.parseInt(times[1]); // 秒
}
else if (times.length == 1)
{
ret = ret + Integer.parseInt(times[0]); // 秒
}
}
catch (Exception e)
{
ret = 0;
}
}
return ret;
} /**
* 得到几天前的时间
* @param d
* @param day
* @return
*/
public static Date getDateBefore(Date d,int day){
java.util.Calendar now = Calendar.getInstance();
now.setTime(d);
now.set(Calendar.DATE,now.get(Calendar.DATE)-day);
return now.getTime();
} /**
* 得到几天后的时间
* @param d
* @param day
* @return
*/
public static Date getDateAfter(Date d,int day){
Calendar now =Calendar.getInstance();
now.setTime(d);
now.set(Calendar.DATE,now.get(Calendar.DATE)+day);
return now.getTime();
} }

数据库时间createtime字段 数据类型的选取的更多相关文章

  1. Mysql 数据库时间更新字段

    关于时间更新: 创建时间: CURRENT_TIMESTAMP 更新时间: 勾选根据时间戳更新

  2. Django学习笔记第十二篇--关于自定义数据库字段数据类型

    一.需求背景: django的models模块提供了很多数据字段的数据类型field,但是总有写奇葩需求不能依靠默认字段满足,所以需要自定义数据数据库数据字段类型.所有的自定义field应该在app路 ...

  3. [转帖]Oracle数据库lob大对象数据类型字段总结,值得收藏

    Oracle数据库lob大对象数据类型字段总结,值得收藏 原创 波波说运维 2019-07-11 00:02:00 https://www.toutiao.com/i67108943269703357 ...

  4. python_way day18 html-day4, Django路由,(正则匹配页码,包含自开发分页功能), 模板, Model(jDango-ORM) : SQLite,数据库时间字段插入的方法

    python_way day18 html-day4 1.Django-路由系统   - 自开发分页功能 2.模板语言:之母板的使用 3.SQLite:model(jDango-ORM) 数据库时间字 ...

  5. 数据库里面DataTime时间类型字段,如果为null时

    tran.TransactionTime = bet.CreationDate.ToString() == "0001/1/1 0:00:00" ? DateTime.Now : ...

  6. 批量替换数据库中所有用户数据表中字段数据类型为char和varchar到nvarchar的脚本

    解决问题:字段类型为char的总是占用指定字节长度(末尾好多空白符号),varchar数据类型长度一个汉字占2个字节,内容存储为中文的字段个人建议全部使用nvarchar. 操作说明:打开SQL Se ...

  7. SqlServer数据库表导入SqlLite数据库表保持日期时间类型字段的格式

    在写查询功能的过程中遇到一个这样的问题:按日期范围查询,sql语句是:where dt>=用户选择起始日期&&dt<=用户选择结束日期.数据库中的数据如图1,我选择的测试数 ...

  8. Laravel / Lumen 框架修改 创建时间 和 更新时间 对应字段

    为避免浪费时间--先上解决方案 在Model中重写 CREATED_AT 和 UPDATED_AT 两个类常量就可以了,这两个常量分别是创建时间和更新时间的字段名. ================= ...

  9. Oracle_字段数据类型

    Oracle_字段数据类型 数据库表字段的数据类型 字符数据类型 CHAR:存储固定长度的字符串 VARCHAR2 :存储可变长度的字符串 数值数据类型 NUMBER:存储整数和浮点数,格式为NUMB ...

随机推荐

  1. 如何成为Python高手(转载)

    本文是从 How to become a proficient Python programmer 这篇文章翻译而来. 这篇文章主要是对我收集的一些文章的摘要.因为已经有很多比我有才华的人写出了大量关 ...

  2. 在Html中使用Requirejs进行模块化开发

    在前端模块化的时候,不仅仅是js需要进行模块化管理,html有时候也需要模块化管理.这里就介绍下如何通过requirejs,实现html代码的模块化开发. 如何使用requirejs加载html Re ...

  3. atitit.sql server2008导出导入数据库大的表格文件... oracle mysql

    atitit.sql server2008导出导入数据库大的表格文件... 1. 超过80M的文件是不能在查询分析器中执行的 1 2. Oracle ,mysql大的文件导入 1 2.1. 使用sql ...

  4. 关于eclispe保存代码自动格式化的设置

    最近在项目开发,上级要求所有开发人员,代码必须格式和(Ctrl+Shift+F),但是还是会偶尔忘记格式化,今天看了有一种保存之后eclipse可以自动格式代码的设置 1.请大家在eclipse设置下 ...

  5. 首先定义一个描述银行账户的Account类,包括成员变 量“账号”和“存款余额”,成员方法有“存款”、“取款”和“余额查询”。其次, 编写一个主类,在主类中测试Account类的功能。(已完善)

    package java1; public class Account { String zhanghao; double yue=0; double add; double get; Account ...

  6. bzoj 2659: [Beijing wc2012]算不出的算式

    2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec  Memory Limit: 128 MB Description 算不出的算式背景:曾经有一个老掉牙的游 ...

  7. Linux内核--异常和中断的区别

          相信大家都知道非常著名的两个名词:异常和中断,不过,你真的理解这两个名词在说什么吗?它们之间有什么区别呢?       1.中断       大家都知道,当我们在敲击键盘的同时就会产生中断 ...

  8. wireshark如何过滤 http数据包

    http.host==magentonotes.com http.host contains magentonotes.com //过滤经过指定域名的http数据包,这里的host值不一定是请求中的域 ...

  9. [leetcode]Maximum Product Subarray @ Python

    原题地址:https://oj.leetcode.com/problems/maximum-product-subarray/ 解题思路:主要需要考虑负负得正这种情况,比如之前的最小值是一个负数,再乘 ...

  10. IOS开发之不同版本适配问题2(#ifdef __IPHONE_7_0)

    继续说说ios不同版本之间的适配 先说一个东西:在xcode当中有一个东西叫targets,苹果的官方文档是这样说的: A target specifies a product to build an ...