之前是一直在用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. input text 的事件及方法

    事件 描述onactivate 当对象设置为活动元素时触发.onafterupdate 当成功更新数据源对象中的关联对象后在数据绑定对象上触发.onbeforeactivate 对象要被设置为当前元素 ...

  2. DDD领域驱动设计之运用层代码

    1.DDD领域驱动设计实践篇之如何提取模型 2.DDD领域驱动设计之聚合.实体.值对象 3.DDD领域驱动设计之领域基础设施层 4.DDD领域驱动设计之领域服务 5.整体DEMO代码 什么是运用层,说 ...

  3. Neo4j:Data Model Transformation:From Relation To Graph

    Here are some tips that help you with the transformation: Each entity table is represented by a labe ...

  4. Windows 10 技术预览

    windows10的技术预览版已经发布了很久了,正式版大约在今年的夏天就会发布,作为微软寄予厚望的下一代全平台操作系统,相比于windows8.1,windows10做了哪些改进,又添加了哪些新功能. ...

  5. [RabbitMQ] AMQP close-reason, initiated by Library, code=541

    RabbitMQ.Client.Exceptions.BrokerUnreachableException: None of the specified endpoints were reachabl ...

  6. cookie and session

    Session is used to save the message for the hole period of user dialogue in web service.Such as the ...

  7. celery简单应用

    写作背景介绍 在celery简单入门中已经介绍了写作的背景,这篇文章主要是深入介绍celery的使用技巧.在实际的项目中我们需要明确前后台的分界线,因此我们的celery编写的时候就应该是分成前后台两 ...

  8. 安装Vmware workstation虚拟机(含软件和注册码)

    1:虚拟机的安装步骤,包含软件包和注册码.本博客所使用的虚拟机版本是vmware-workstation_11.1.0版本,注意不是最新版本, 软件包:http://pan.baidu.com/s/1 ...

  9. Null Object模式

    去除代码中的if(obj==null),或者try/catch语句.维持Code的一致性. Null对象,代表"什么也不做"的一个对象. 使Null对象称为一个匿名内部类确保了该类 ...

  10. SQLSERVER新建表的时候页面分配情况是怎样的?

    SQLSERVER新建表的时候页面分配情况是怎样的? 再次感谢sqlskill网站和转载sqlskill网站文章并翻译的人,因为您们的转载和翻译让小弟又学习到新的东西o(∩_∩)o 文章中用到的工具: ...