知识大全 SQL语句获取日期

Posted 时间

篇首语:只有上不去的天,没有过不去的山。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 SQL语句获取日期相关的知识,希望对你有一定的参考价值。

SQL语句获取日期  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  SQL语句获取特定日期

   一个月第一天的

  Select DATEADD(mm DATEDIFF(mm getdate()) )

   本周的星期一

  Select DATEADD(wk DATEDIFF(wk getdate()) )

   一年的第一天

  Select DATEADD(yy DATEDIFF(yy getdate()) )

   季度的第一天

  Select DATEADD(qq DATEDIFF(qq getdate()) )

   当天的半夜

  Select DATEADD(dd DATEDIFF(dd getdate()) )

   上个月的最后一天

  Select dateadd(ms DATEADD(mm DATEDIFF(mm getdate()) ))

   去年的最后一天

  Select dateadd(ms DATEADD(yy DATEDIFF(yy getdate()) ))

   本月的最后一天

  Select dateadd(ms DATEADD(mm DATEDIFF(m getdate())+ ))

   本年的最后一天

  Select dateadd(ms DATEADD(yy DATEDIFF(yy getdate())+ ))

   本月的第一个星期一

  select DATEADD(wk DATEDIFF(wk dateadd(dd datepart(day getdate()) getdate())) )

  返回当前日期和时间

  通过函数GETDATE() 你可以获得当前的日期和时间 函数GETDATE()可以用来作为DATEDIME型字段的缺省值 这对插入记录 时保存当时的时间是有用的 要建立一个表 其中的记录包含有当前的日期和时间 可以添加一个DATETIME型字段 指定其缺省值为函数 GETDATE()的返回值 就象这样

  Create TABLE site_log (

  username VARCHAR( )

  useractivity VARCHAR( )

  entrydate DATETIME DEFAULT GETDATE())

  转换日期和时间

  函数GETDATE()的返回值在显示时只显示到秒 实际上 SQL Sever内部时间可以精确到毫秒级(确切地说 可以精确到 毫秒)

  要得到不同格式的日期和时间 你需要使用函数CONVERT() 例如 当下面的这个语句执行时 显示的时间将包括毫秒

  Select CONVERT(VARCHAR( ) GETDATE() )

  注意例子中数字 的使用 这个数字指明了在显示日期和时间时使用哪种日期和时间格式 当这个语句执行时 将显示如下的日期和时间

  Nov : : : AM

  ( row(s) affected)

  在函数CONVERT()中你可以使用许多种不同风格的日期和时间格式 下表显示了所有的格式

  日期和时间的类型

  类型值 标准 输出

   Default mon dd yyyy hh:miAM

   USA mm/dd/yy

   ANSI yy mm dd

   British/French dd/mm/yy

   German dd mm yy

   Italian dd mm yy

   dd mon yy

   mon dd yy

   hh:mi:ss

   Default + milliseconds mon dd yyyy

  hh:mi:ss:mmmAM(or )

   USA mm dd yy

   JAPAN yy/mm/dd

   ISO yymmdd

   Europe Default + milliseconds dd mon yyyy

  hh:mi:ss:mmm( h)

   hh:mi:ss:mmm( h)

  类型 和 总是返回四位的年 对其它类型 要显示世纪 把style值加上 类型 和 返回 小时时钟的时间 类型 和 返回的月份用三位字符表示(用Nov代表November)

  对表中所列的每一种格式 你可以把类型值加上 来显示有世纪的年(例如 年将显示为 年) 例如 要按日本标准显示日期 包括世纪 你应使用如下的语句

  Select CONVERT(VARCHAR( ) GETDATE() )

  在这个例子中 函数CONVERT()把日期格式进行转换 显示为 / /

  抽取日期和时间

  在许多情况下 你也许只想得到日期和时间的一部分 而不是完整的日期和时间 为了抽取日期的特定部分 你可以使用函数DATEPART() 象这样

  Select site_name ‘Site Name’

  DATEPART(mm site_entrydate) ‘Month Posted’ FROM site_directory

  函数DATEPART()的参数是两个变量 第一个变量指定要抽取日期的哪一部分 第二个变量是实际的数据 在这个例子中 函数DATEPART()抽取月份 因为mm代表月份 下面是这个Select 语句的输出结果

  Site Name Month Posted

  ………………………………………………………………

  Yahoo

  Microsoft

  Magicw

  ( row(s) affected)

  Month Posted列显示了每个站点被查询的月份 函数DATEPART()的返回值是一个整数 你可以用这个函数抽取日期的各个不同部分 如下表所示

  日期的各部分及其简写

  日期部分 简写 值

  year yy

  quarter qq

  month mm

  day of year dy

  day dd

  week wk

  weekday dw (Sunday Saturday)

  hour hh

  minute mi

  second ss

  milisecond ms

  当你需要进行日期和时间的比较时 使用函数DATEPART()返回整数是有用的 但是 上例中的查询结果( )不是十分易读 要以更易读的格式得到部分的日期和时间 你可以使用函数DATENAME() 如下例所示

  Select site_name ‘Site Name’

  DATENAME(mm site_entrydate) ‘Month Posted’

  FROM site_directory

  函数DATENAME()和函数DATEPART()接收同样的参数 但是 它的返回值是一个字符串 而不是一个整数 下面是上例该用DATENAME()得到的结果

  Site Name Month Postec

  …………………………………………………………………

  Yahoo February

  Microsoft June

  Magicw June

  ( row(s) affected)

  你也可以用函数DATENAE()来抽取一个星期中的某一天 下面的这个例子同时抽取一周中的某一天和日期中的月份

  Select site_name ‘Site Name’

  DATENAME(dw site_entrydate)+ ‘ ’ + DATENAME(mm site_entrydate)

  ‘Day and Month Posted’ FORM site_directory

  这个例子执行时 将返回如下的结果

  Site Name Day and Month Posted

  ………………………………………………………………………

  Yahoo Friday February

  Microsoft Tuesday June

  Magicw Monday June

  ( row(s) affected)

  返回日期和时间范围

  当你分析表中的数据时 你也许希望取出某个特定时间的数据 你也许对特定的某一天中――比如说 年 月 日――访问者在你站点上的活动感兴趣 要取出这种类型的数据 你也许会试图使用这样的Select语句

  Select * FROM weblog Where entrydate=“ / / ”

  不要这样做 这个Select语句不会返回正确的记录――它将只返回日期和时间是 / / : : : AM的记录 换句话说 只有刚好在午夜零点输入的记录才被返回

  问题是SQL Sever将用完整的日期和时间代替部分日期和时间 例如 当你输入一个日期 但不输入时间时 SQL Sever将加上缺省的时间“ AM” 当你输入一个时间 但不输入日期时 SQL Sever将加上缺省的日期“Jan ”

  要返回正确的记录 你需要适用日期和时间范围 有不止一种途径可以做到这一点 例如 下面的这个Select 语句将能返回正确的记录

  Select * FROM weblog

  Where entrydate>=” / / ” AND entrydate<” / / ”

  这个语句可以完成任务 因为它选取的是表中的日期和时间大于等于 / / : : : AM并小于 / / : : : AM的记录 换句话说 它将正确地返回 年圣诞节这一天输入的每一条记录

  另一种方法是 你可以使用LIKE来返回正确的记录 通过在日期表达式中包含通配符“%” 你可以匹配一个特定日期的所有时间 这里有一个例子

  Select * FROM weblog Where entrydate LIKE ‘Dec %’

  这个语句可以匹配正确的记录 因为通配符“%”代表了任何时间

  使用这两种匹配日期和时间范围的函数 你可以选择某个月 某一天 某一年 某个小时 某一分钟 某一秒 甚至某一毫秒内输入的记录 但是 如果 你使用 LIKE 来匹配秒或毫秒 你首先需要使用函数CONVERT()把日期和时间转换为更精确的格式(参见前面“转换日期和时间”一节)

  比较日期和时间

  最后 还有两个日期和时间函数对根据日期和时间取出记录是有用的 使用函数DATEADD()和DATEDIFF() 你可以比较日期的早晚 例如 下面的Select语句将显示表中的每一条记录已经输入了多少个小时

  Select entrydate ‘Time Entered’

  DATEDIFF(hh entrydate GETDATE()) ‘Hours Ago’ FROM weblog

  如果当前时间是 年 月 号下午 点 分 则会返回如下的结果

  Time Entered Hours Ago

  …………………………………………………

  Dec : PM

  Dec : PM

  Dec : PM

  ( row(s) affected)

  函数DADEDIFF()的参数是三个变量 第个变量指定日期的某一部分 在这个例子中 是按小时对日期进行比较 (要了解日期各部分的详细内 容 请参考表 )在日期 年 月 日和 年 月 日的指定时间之间有 个小时 另外两个参数是要进行比较的时间 为了返回一个正数 较早 的时间应该先给

  函数DATEADD()把两个日期相加 当你需要计算截止日期这一类的数据时 这个函数是有用处的 假如你要查询一个月前注册用户的记录 你可以使用如下的Select语句

  Select username ‘User Name’

  DATEADD(mm firstvisit_date) ‘Registration Expires’

  FROM registration_table

  函数DATEADD()的参数有三个变量 第一个变量代表日期的某一部分 这个例子用到了代表月份的mm 第二个变量指定了时间的间隔――在本 例中是一个月 最后一个变量是一个日期 在这个例子中 日期是取自DATETIME型字段firstvisit_date 假设当前日期是June 这个语句将返回如下的内容

  User Name Registration Expires

  ……………………………………………………………………………

  Bill Gates Jul : PM

  President Clinton Jul : PM

  William Shakespeare Jul : PM

  ( row(s) affected)

  注意

cha138/Article/program/MySQL/201311/29539

相关参考

知识大全 获取数据-SELECT语句(1)

SQL实战新手入门:获取数据-SELECT语句(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 获取数据-SELECT语句(2)

SQL实战新手入门:获取数据-SELECT语句(2)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 获取数据-SELECT语句(3)

SQL实战新手入门:获取数据-SELECT语句(3)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 获取数据-SELECT语句(4)

SQL实战新手入门:获取数据-SELECT语句(4)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 绑定变量的获取

  对于带有绑定变量的SQL语句ORACLE在第一次执行的时候将会进行绑定变量的PEEK是否PEEK是否隐含参数_OPTIM_PEEK_USER_BINDS控制默认为TRUEORACLE在第一次  P

知识大全 获取或记录Oracle语句的执行时间

获取或记录Oracle语句的执行时间  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  很多情况下我

知识大全 SQL基本语句

SQL基本语句  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  掌握SQL四条最基本的数据*作语句

知识大全 测试sql语句性能

  有时候我们经常为我们的sql语句执行效率低下发愁反复优化后可还是得不到提高  那么你就用这条语句找出你sql到底是在哪里慢了  示例  SETSTATISTICSioON  &

知识大全 sql语句实现表的字段名查询

  下面为您介绍的是查询表的字段名的sql语句写法sql语句可以实现许多的功能希望可以您在学习sql语句使用方面获得启示  selectnamefromsyscolumnswhereid=(selec

知识大全 Sql语言基础教程 sql基本语句[1]

Sql语言基础教程sql基本语句[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &