在SQL中使用convert函数进行日期的查询的代码
曾经遇到这样的情况,在数据库的Meeting表中有PublishTime (DateTime,8)字段,用来存储一个开会时间,在存入时由于要指明开会具体时间,故格式为yyyy-mm-dd hh:mm:ss,而我们查询时是通过yyyy-mm-dd来进行的,即查询某一天的所有会议信息,这样如果通过select * from Meeting where PublishTime=@PublishTime (参数@PublishTime为yyyy-mm-dd格式)语句进行查询将无法得到正确结果,比如我们要查询2004年12月1日的会议信息,在输入2004-12-01时就不能得到查询结果,而这种查询又不能要求输入具体的hh:mm:ss.
此时我们需要使用convert函数,它可以将一种数据类型的表达式转换为另一种数据类型的表达式.此处我们先将数据库内的datetime类型转换为char类型,由于输入的参数是10位的,所以写成
select * from Meeting where convert(varchar(10),PublishTime,121))=@PublishTime,这样在查询时数据库得到参数后先自动将数据库内的信息转换为yyyy-mm-dd格式的10位字符,只要与参数相同即可返回查询结果.而convert中的121是指将datetime类型转换为char类型时获得包括世纪位数的4位年份
相关推荐
-
Sqlserver 常用日期时间函数
MS SQL Server中文版的预设日期datetime格式是yyyy-mm-dd hh:mm:ss.mmm 长短日期格式 复制代码 代码如下: --短日期格式:yyyy-m-d SELECT REPLACE(CONVERT(varchar(10),getdate(),120),N'-0','-') --长日期格式:yyyy年mm月dd日 SELECT STUFF(STUFF(CONVERT(char(8),getdate(),112),5,0,N'年'),8,0,N'月')+N'日' --短
-
SqlServer中的日期与时间函数
一.Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基础上,返回新的 datetime 值 例如:向日期加上2天 select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000 3. datediff 返回跨两个指定日期的日期和时间边界数. select datediff(day,'2004-09-01','2004-09-18')
-
sqlserver获取当前日期的最大时间值
那你也许会问及,怎样获取当前系统日期的最大时间值,如yyyy-MM-dd 23:59:59.997. 我们可以使用DATEADD函数,来实现,以当前日期的午夜时间值加一天,即得到第二天的午夜时间值,然后再减去3秒,即可以获取当前系统日期的最大时间值. 复制代码 代码如下: DECLARE @Date DATETIME = CURRENT_TIMESTAMP --当前系统日期时间 DECLARE @midnight DATETIME SET @midnight = CAST(CAST(@Date
-
SQLserver中用convert函数转换日期格式的方法
SQL Server中文版的默认的日期字段datetime格式是yyyy-mm-dd Thh:mm:ss.mmm 例如: select getdate() 整理了一下SQL Server里面可能经常会用到的日期格式转换方法: 举例如下: select CONVERT(varchar, getdate(), 120 ) 2004-09-12 11:06:08 select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-','
-
sql 查询本年、本月、本日记录的语句,附SQL日期函数
查询本日记录 SELECT * FROM messages WHERE CONVERT(Nvarchar, CreateDate, 111) = CONVERT(Nvarchar, GETDATE(), 111) ORDER BY CreateDate DESC SELECT * FROM 表 WHERE datediff(day,列名,getdate())=0 查询本年 SELECT count(*) FROM messages WHERE datediff(year,CreateDate
-
按日期选择最晚日期与最早日期对应的数的差值
表结构如下 number date 8 2009/1/11 2:00 7 2009/1/11 5:00 6 2009/1/11 12:00 5 2009/1/11 18:00 4 2009/1/12 4:00 3 2009/1/12 10:00 2 2009/1/12 12:00 1 2009/1/11 17:00 想得到当天的最早时间与最晚时间的number的差值, 即如下的结果: 差 2 3 复制代码 代码如下: create table #date ( number int identit
-
sql语句中如何将datetime格式的日期转换为yy-mm-dd格式
如果在asp中我们可以用year(date())这样的格式在sql语句中,不知道这样的效率怎么样不过是个方法 复制代码 代码如下: select substring(convert(char,registdate,120),1,10) as registdate from tbuser
-
数据库 日期加减处理
在实际的处理中,还有一种比较另类的日期加减处理,就是在指定的日期中,加上(或者减去)多个日期部分,比如将2005年3月11日,加上1年3个月11天2小时.对于这种日期的加减处理,DATEADD函数的力量就显得有点不够. 要实现多个日期部分的加减处理,最主要的就是把要加减的日期字符分解,然后根据分解的结果在指定日期的对应日期部分加上相应的值,其难点在于如何分解日期字符,以及判断分解后的日期字符属于哪个日期部分.要顺利地分解出日期字符的话,首先要规定日期加减的日期字符的格式,可以这样定义: y-m-
-
sqlserver中如何查询出连续日期记录的代码
有在论坛上看到一帖,<请教查询出连续日期记录的方法>,截图如下: Insus.NET尝试写了程序并做了测试,可以得到预期的结果,SQL代码可参考和学习之用. 复制代码 代码如下: --创建一个临时表,将会存储连续日期的记录 CREATE TABLE #temp (IDD VARCHAR(10),SDATE DATETIME) DECLARE @sD DATETIME --开始日期 DECLARE @eD DATETIME --结束日期 --在记录中,找出开始与结束日期 SELECT @sD =
-
SQL Server日期计算第1/2页
SQL Server日期计算 通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函数中计算出自己所需要的日期!在这篇文章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期. 在使用本文中的例子之前,你必须注意以下的问题.大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全
-
SQL 返回期间内的所有日期
复制代码 代码如下: select rownum as dateIndex,to_date('20090701','yyyy-mm-dd')+ rownum-1 AS DATE_ FROM DUAL CONNECT BY LEVEL >= 1 AND LEVEL <=(TO_DATE('20090731','yyyy-mm-dd')-TO_DATE('20090701','yyyy-mm-dd')+1) result: 1 2009/07/01 2 2009/07/02 3 2009/07/0
-
SQL Server各种日期计算方法(收藏)
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割(年.月.日等),然后仅仅用分割出来的年.月.日等放在几个函数中计算出自己所需要的日期!在这篇文 章里,我将告诉你如何使用DATEADD和DATEDIFF函数来计算出在你的程序中可能你要用到的一些不同日期. 在使用本文中的例子之前,你必须注意以下的问题.大部分可能不是所有例子在不同的机器上执行的结果可能不一样,这完全由哪一天是一个星期的第一天这个设置决定.第
-
SQL Server自动生成日期加数字的序列号
USE MASTER GO IF EXISTS(SELECT * FROM dbo.sysdatabases WHERE name='my_test_database') DROP DATABASE [my_test_database] GO CREATE DATABASE [my_test_database] GO USE [my_test_database] GO CREATE TABLE [my_table] ([my_id] VARCHAR(16)) GO --存储过程开始 : CREA
-
根据日期知道当天是星期几的手动计算方法
蔡勒(Zeller)公式:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 公式中的符号含义如下,w:星期:c:世纪-1:y:年(两位数):m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1.2月要看作上一年的13.14月来计算,比如2003年1月1日要看作2002年的13月1日来计算):d:日:[ ]代表取整,即只要整数部分.(C是世纪数减一,y是年份后两位,M是月份,d是日数.1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值.) 算出来的W
-
MSSQL 计算两个日期相差的工作天数的语句
复制代码 代码如下: if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[f_WorkDay]') and xtype in (N'FN', N'IF', N'TF')) drop function [dbo].[f_WorkDay] GO --计算两个日期相差的工作天数 CREATE FUNCTION f_WorkDay( @dt_begin datetime, --计算的开始日期 @dt_end date
-
SQL Server 日期函数CAST 和 CONVERT 以及在业务中的使用介绍
最近时间刚从客户端转入后台写服务,对于后台数据库以及服务的书写完全是个小白,所以最近写的肯定没有太多技术含量. 首先把遇到的问题摆出来:还是那张错误上报表,字段主要有上报错误ID(ErrorID),上报人(ReportPerson),上报时间(ReportTime)精确到毫秒,现在要做的统计是:(1)统计一定时间内[起止时间精确到毫秒](beginTime,endTime)每个人每天上报的错误个数(2)统计一定时间内[起止时间到精确到月](beginTime,endTime)按月统计每个人上报的
-
SQL Server 日期相关资料详细介绍
一.日期类型: 对于SQL Server 2008 来说(因为2000甚至2005已经稍微有被淘汰的迹象,所以在此不作过多说明,加上自己工作使用的是2008R2.所以不保证08以前的能用),日期类型有: 数据类型 格式 范围 精确度 存储大小(以字节为单位) 用户定义的秒的小数精度 时区偏移量 time hh:mm:ss[. nnnnnnn] 00:00:00.0000000 到 23:59:59.9999999 100 纳秒 3 到 5 是 否 date YYYY-MM-DD 0001-01-
随机推荐
- php站内搜索并高亮显示关键字的实现代码
- 全盘搜索指定文件并拷贝到指定位置[自动重命名]的批处理
- javascript获取重复次数最多的字符
- 30个php操作redis常用方法代码例子
- Python中的魔法方法深入理解
- Vue 表单控件绑定的实现示例
- 浅谈discuz密码加密的方式
- jQuery find和children方法使用
- 国内一些常用PHP的CMS的Nginx服务器的伪静态规则整理
- Apache Web让JSP“动”起来
- C++ 通过指针实现多态实例详解
- Java中volatile关键字的作用与用法详解
- Java中堆和栈的区别详解
- java客户端Jedis操作Redis Sentinel 连接池的实现方法
- Python中datetime模块参考手册
- php中pcntl_fork创建子进程的方法实例
- Android Studio 3.0后出现AAPT2与“android.enableAapt2”问题的解决方法
- Koa2微信公众号开发之本地开发调试环境搭建
- Java中final与继承操作实例分析
- python开发准备工作之配置虚拟环境(非常重要)