>>与软件开发有关的知识:操作系统,数据库,网络通信等 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20565 个阅读者 刷新本主题
 * 贴子主题:  SQL Server 和 MySQL 中的 Date 函数 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-02-03 00:59:53     消息  查看  搜索  好友  邮件  复制  引用

  

SQL  Date 函数

SQL 日期(Dates)

     点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。

     只要您的数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间部分,情况就有点复杂了。

     在讨论日期查询的复杂性之前,我们先来看看最重要的内建日期处理函数。    

MySQL Date 函数

     下面的表格列出了 MySQL 中最重要的内建日期函数:

    
函数 描述
  NOW() 返回当前的日期和时间
  CURDATE() 返回当前的日期
  CURTIME() 返回当前的时间
  DATE() 提取日期或日期/时间表达式的日期部分
  EXTRACT() 返回日期/时间的单独部分
  DATE_ADD() 向日期添加指定的时间间隔
  DATE_SUB() 从日期减去指定的时间间隔
  DATEDIFF() 返回两个日期之间的天数
  DATE_FORMAT() 用不同的格式显示日期/时间
    

SQL Server Date 函数

     下面的表格列出了 SQL Server 中最重要的内建日期函数:

            
函数 描述
  GETDATE() 返回当前的日期和时间
  DATEPART() 返回日期/时间的单独部分
  DATEADD() 在日期中添加或减去指定的时间间隔
  DATEDIFF() 返回两个日期之间的时间
  CONVERT() 用不同的格式显示日期/时间
    

SQL Date 数据类型

     MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:    
  • DATE - 格式:YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式:YYYY-MM-DD HH:MM:SS
  • YEAR - 格式:YYYY 或 YY
     SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:    
  • DATE - 格式:YYYY-MM-DD
  • DATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • SMALLDATETIME - 格式:YYYY-MM-DD HH:MM:SS
  • TIMESTAMP - 格式:唯一的数字
     注释:当您在数据库中创建一个新表时,需要为列选择数据类型!

     如需了解所有可用的数据类型,请访问我们完整的  数据类型参考手册[/url]。    

SQL 日期处理

     点击在新窗口中浏览原图
CTRL+鼠标滚轮放大或缩小如果不涉及时间部分,那么我们可以轻松地比较两个日期!

    假设我们有如下的 "Orders" 表:

    
OrderId ProductName OrderDate
1 Geitost 2008-11-11
2 Camembert Pierrot 2008-11-09
3 Mozzarella di Giovanni 2008-11-11
4 Mascarpone Fabioli 2008-10-29


     现在,我们希望从上表中选取 OrderDate 为 "2008-11-11" 的记录。

     我们使用下面的 SELECT 语句:

     SELECT * FROM Orders WHERE OrderDate='2008-11-11'

    结果集如下所示:

    
OrderId ProductName OrderDate
1 Geitost 2008-11-11
3 Mozzarella di Giovanni 2008-11-11


     现在,假设 "Orders" 表如下所示(请注意 "OrderDate" 列中的时间部分):

    
OrderId ProductName OrderDate
1 Geitost 2008-11-11 13:23:44
2 Camembert Pierrot 2008-11-09 15:45:21
3 Mozzarella di Giovanni 2008-11-11 11:12:01
4 Mascarpone Fabioli 2008-10-29 14:56:59


    如果我们使用和上面一样的 SELECT 语句:

    SELECT * FROM Orders WHERE OrderDate='2008-11-11'

    或

    SELECT * FROM Orders WHERE OrderDate='2008-11-11 00:00:00'
    那么我们将得不到结果!因为表中没有"2008-11-11 00:00:00"日期。如果没有时间部分,默认时间为 00:00:00。

    提示:如果您希望使查询简单且更易维护,那么请不要在日期中使用时间部分!

        



程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-05 17:21:15 重新编辑]
  Java面向对象编程-->Java语言中的修饰符
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->映射对象标识符
  Java网络编程-->RMI框架
  精通Spring-->CSS过渡和动画
  Vue3开发-->绑定CSS样式
  TCP的三次握手建立链接和四次挥手释放链接
  SSL知识简介
  构建高大上的MySQL监控平台
  回表与覆盖索引
  MySQL 索引 的创建和删除
  SQL的SUM() 函数 的用法
  SQL AUTO INCREMENT 字段
  SQL INSERT INTO SELECT 语句
  DTD中声明元素
  网络运维 - 你与真相就差一层窗户纸
  MySQL5.7慢查询日志时间与系统时间差8小时原因
  存储与虚拟主机管理
  电脑启动不起来,提示Reboot and select proper boot device ...
  linux系列之常用运维命令整理
  HTML5+JavaScript实现一个简单的音乐播放器
  更多...
 IPIP: 已设置保密
树形列表:   
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。