十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
timestamp这种类型就是包含日期和时间的而且根据时区来显示的,将这列的类型设置为date时你看看这一列有没有允许空值,date是有效的数据类型报错的话一般都是没有允许空值后面还default null,你可以用curdate()去返回当前日期。
站前ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
java中有date和datetime,mysql中也有date和datetime,这里我们来说说mysql中的date和datetime。
1 mysql中的date和datetime
1.1 DATETIME
类型可用于需要同时包含日期和时间信息的值。MySQL 以:
‘YYYY-MM-DD HH:MM:SS’
格式检索与显示 DATETIME 类型。支持的范围是:
‘1000-01-01 00:00:00’
到
‘9999-12-31 23:59:59’。
(“支持”的含义是,尽管更早的值可能工作,但不能保证他们均可以。)
1.2 DATE
类型可用于需要一个日期值而不需要时间部分时。MySQL 以
‘YYYY-MM-DD’
格式检索与显示DATE值。支持的范围则是
‘1000-01-01’
到
‘9999-12-31’。
2 与java数据的交互
能看出来mysql中的date和datetime区别还是挺大的,date没有保存时间。但是java中的date(java.util.Date)记录的还是挺细的,日期和时间都可以记下来,那么现在问题来了,如果想在mysql中存储日期和时间,也就是用datetime,而在数据中应该如何对应呢?
我使用hibernate测了一下,发现当把mysql数据库中设置了datetime,反向工程生成的hbm.xml文件中,使用的是timestamp,如下:
property name="Publishdate" column="publishdate" type="timestamp" not-null="false" length="10" /1
反向生成java的pojo时,生成的还是Date。
由此可见对于mysql中datetime,与java中的date,如果要使二者正确交互,中间要使用timestamp。
如果要在JAVA中直接插入MySql的datetime类型,则可以使用:
Date date = new Date();
Timestamp timeStamp = new Timestamp(date.getTime());12
再用setTimestamp()设置数据库中的“日期+时间”。
这样放入数据库的就是“yyyy-mm-dd hh:mm:ss”格式的数据。
注意,mysql中如果使用date而不是datetime是保存不下“日期+时间”的,只能保存“时间”。
1.1 获得当前日期+时间(date + time)函数:now()
除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:
current_timestamp() current_timestamp
localtime() localtime
localtimestamp() localtimestamp
这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。
1.2 获得当前日期+时间(date + time)函数:sysdate()
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。
2. 获得当前日期(date)函数:curdate()
其中,下面的两个日期函数等同于 curdate(): current_date(),current_date
3. 获得当前时间(time)函数:curtime()
其中,下面的两个时间函数等同于 curtime():current_time(),current_time
4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()
mysql有丰富的时间函数:
ADDTIME
(date2
,time_interval
)
//将time_interval加到date2
CONVERT_TZ
(datetime2
,fromTZ
,toTZ
)
//转换时区
CURRENT_DATE
(
)
//当前日期
CURRENT_TIME
(
)
//当前时间
CURRENT_TIMESTAMP
(
)
//当前时间戳
DATE
(datetime
)
//返回datetime的日期部分
DATE_ADD
(date2
,
INTERVAL
d_value
d_type
)
//在date2中加上日期或时间
DATE_FORMAT
(datetime
,FormatCodes
)
//使用formatcodes格式显示datetime
DATE_SUB
(date2
,
INTERVAL
d_value
d_type
)
//在date2上减去一个时间
DATEDIFF
(date1
,date2
)
//两个日期差
DAY
(date
)
//返回日期的天
DAYNAME
(date
)
//英文星期
DAYOFWEEK
(date
)
//星期(1-7)
,1为星期天
DAYOFYEAR
(date
)
//一年中的第几天
EXTRACT
(interval_name
FROM
date
)
//从date中提取日期的指定部分
MAKEDATE
(year
,day
)
//给出年及年中的第几天,生成日期串
MAKETIME
(hour
,minute
,second
)
//生成时间串
MONTHNAME
(date
)
//英文月份名
NOW
(
)
//当前时间
SEC_TO_TIME
(seconds
)
//秒数转成时间
STR_TO_DATE
(string
,format
)
//字串转成时间,以format格式显示
TIMEDIFF
(datetime1
,datetime2
)
//两个时间差
TIME_TO_SEC
(time
)
//时间转秒数]
WEEK
(date_time
[,start_of_week
])
//第几周
YEAR
(datetime
)
//年份
DAYOFMONTH(datetime)
//月的第几天
HOUR(datetime)
//小时
LAST_DAY(date)
//date的月的最后日期
MICROSECOND(datetime)
//微秒
MONTH(datetime)
//月
MINUTE(datetime)
//分返回符号,正负或0
SQRT(number2)
//开平方
以上函数仅供参考,详细的可以查看雷雪松的博客。
1.1 获得当前日期+时间(date + time)函数:now()
除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数:
current_timestamp() current_timestamp
localtime() localtime
localtimestamp() localtimestamp
这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。
1.2 获得当前日期+时间(date + time)函数:sysdate()
sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。
2. 获得当前日期(date)函数:curdate()
其中,下面的两个日期函数等同于 curdate(): current_date(),current_date
3. 获得当前时间(time)函数:curtime()
其中,下面的两个时间函数等同于 curtime():current_time(),current_time
4. 获得当前 UTC 日期时间函数:utc_date(), utc_time(), utc_timestamp()
1、首先,我们打开软件,需要创建一个控制台应用程序,在Main方法中用来获取并输出系统当前的日期,输入:DateTime now = DateTime.Now。
2、在visual studio中按F5就可以调试模式运行程序,这个时候,就可以看到当前的日期加时间都输出来了。
3、获取到了今天的日期,这个时候就可以使用DayOfWeek属性了。输入DayOfWeek week = now.DayOfWeek。
4、重新调试运行,就可以看到当前系统日期,以及星期几都输出来了。只不过星期输出来的是英文。
5、接着,在Program类的同级,添加一个新的静态类和静态方法,此处使用静态,仅仅只是为了方便调用。在这个方法中,接收开始、结束日期,然后计算出两个日期之间的工作日天数。
6、在Main方法中,直接通过静态类的静态方法调用,并将结果输出到控制台窗口。
7、重新调试模式运行,就可以看到指定传入的日期之间的工作日天数都计算出来了。