sql server 如何将日期时间字段修改成最接近该时间的整点时间?

declare @dt2 datetime='2013-5-1'

以下语句中的时间字段以“date_test”为例

sql server 日期函数 sql日期函数的使用方法sql server 日期函数 sql日期函数的使用方法


sql server 日期函数 sql日期函数的使用方法


1、获取“最近”的整点:

使用DATEADD(datepart,number,date)函数(结尾有详细语法说明)来获取一个时间30分钟后的时间DATEADD(mi,30,date_test)

列值为2017-01-01

01:20:00,返回2017-01-01

01:50:00,即整点1点

列值为2017-01-01

01:40:00,返回2017-01-01

02:10:00,即整点2点

2、根据方法1获取的时间,使用DATENAME函数分别取出年份、月份、小时,比如年份DATENAME(YEAR,DATEADD(mi,30,date_test))

3、根据方法2获取的年份、月份、小时,使用’-‘符连接成时间,用 CAST(char

as

datetime)函数转成时间数据类型

完整代码(代码中以系统当前时间(getdate())为参考时间):

select CAST(DATENAME(YEAR,DATEADD(mi,30,getdate()))+'-'+DATENAME(MONTH,DATEADD(mi,30,getdate()))+'-'+DATENAME(DAY,DATEADD(mi,30,getdate()))+' '+DATENAME(HOUR,DATEADD(mi,30,getdate()))+':00:00' AS DATETIME)

DATEADD的语法:

--DATEADD(datepart,number,date)——在日期上增加给定日期类型的数量;

select dateadd(yyyy,4,cl_s_time) as '增加4年后' from class --datepart - 年份

yy、yyyy

--datepart - 季度

qq、q

select dateadd(mm,3,cl_s_time) as '增加3月度后' from class

--datepart - 月份

mm、m

--datepart - 每年的某一日

dy、y

dd、d

--datepart - 星期

wk、ww

--datepart - 小时

hh

--datepart - 分钟

mi、n

--datepartSql - 秒

ss、s

--datepart - 毫秒

ms

如何在SQL server insert语句中插入默认当前日期?

下一分 2011-02-11 21:28:15.750

这个要在建表的时候设置好,比如

create table student (

stuno int,

sc varchar(50),

entry_date date default getdate()

)这样建表后,你每次插入数据的时候,如果entry_date字段没有传值进来,那么系统会默认取当前日期

入学时间为字符型:

insert into school.student(学号,专业,入学时间) values(3222,'',convert(varchar(10),getdate(),120))

入学时间为日期型:

insert into school.student(学号,专业,入学时间) values(3222,'',getdate())

例如在Table_Name中包含一个时间的列date_now

插入语句可以使用如下insert into Table_Name(dat返回表示指定 date 的月份的整数。e_now) values(getdate())

例如在Table_Name中包含一个时间的列date_now

插入语句可以使用如下insert into Table_Name(date_now) values(getdate())

在sql server insert语句中插入默认当前日期的方法:

1、入学时间为字符型:

insert into school.student(学号,专业,入学时间)

values(3222,'',convert(varchar(10),getdate(),120))

2、入学时间为日期型:

insert into school.student(学号,专业,入学时间)

SQL用的是getdate()函数 默认当前时间

insert into school.student(学号,专业,入学时间) values(3222,'',getdate())

insert into school.student values(3222,'',getdate());

不过你的列类型是要datetime类型

INSERT INTO 表名称

( ID, CreatedTime )

VALUES ( NEWID(), GETDATE() )

sql 生日查询

2、要计算每个人的年龄,可用如下语句:

有很多方法可以实现吧,灵活点,具体的数据库系统实现可能有所不同,

--datepart - 日期

主要是利用日期和时间函数进得计算:

后天=今天+2天

以下给个参考,sql server的例子

select from employee where datediff(dd,getdate(),birthday)=2

你们不觉得直接根据出生日期算有问题吗?难道所有的人都是1岁吗 生日跟当前时间会相很多年 不能直接算

select from 表 where ziduan like %(生日减去2天)

SQL 如何获取日期表示去年的今天

SELECT 121 AS ID , Convert(VARCHAR(30), GETDATE(), 121) AS result

var day=365;

SELECT 109 AS ID , Convert(VARCHAR(30), GETDATE(), 109) AS result UNION ALL

if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))

day =366;

就是闰年 和平年

当前时间 - day

select dateadd(year,-1,getdate()) 不行吗?

select dateadd(y,-1,getdate())

SQL server中用日期函数计算年龄和天数,并以消息方式输出

SELECT 110 AS ID , Convert(VARCHAR(30), GETDATE(), 110) AS result UNION ALL

declare @sql nvarchar(max),@birthday alldatetime

set @birthday='如果是 SQL 1987-10-13'

set @sql='年龄'+cast(datediff(yy,@birthday,getdate()) as nvarchar)+'岁,'+cast(datediff(dd,@birthday,getdate()) as nvarchar)+'天'

print @sql

SQL server 对日期每三天进行分组

1、首先需要一个能生成日期范围的表值函数

/

SELECT FROM DateRange('d','2018-01-01','2018-06-01')

3、生成如:Convert(datetime,120)每隔3天的日期段

4、使用上面的查询去关联带值的表,然后进行SU13> SELECT '分' AS '日期部分', DATEDIFF(mi, '2012-12-21', GETDATE()) AS [数值]M即可实现

SQL语句获取日期的月份

select

用sql自带函数month来实现。

请参阅

获取月份语句如下:

select MONTH(列名) as month from 表名.

执行结果如下:

拓展资料:

sql中常见日期获取:

select MONTH(GETDATE()) --获取当前月份

select MONTH(DATEADD(MONTH,1,GETDATE())) --获取当前月份的下个月

year()获取年

select year(GETDATE())

day()获取日

select day(GETDATE())

SELECT MONTH('2008-11-2 00:00:00');

MONTH (Transact-SQL) 发送反馈

全部折叠全部展开 语言筛选器: 全部语言筛选器: 多个语言筛选器: Visual Basic语言筛选器: C#语言筛选器: C++语言筛选器: J#语言筛选器: JScript

Visual Basic(Declaration)

C#

C++

J#

JScript

有关所有 Transact-SQL 日期和时间数据类型及函数的概述,请参阅日期和时间数据类型及函数 (Transact-SQL)。有关日期和时间数据类型及函数共有的信息和示例,请参阅使用日期和时间数据。

Transact-SQL 语法约定

语法

MONTH ( date )

参数

date

是一个可以解析为 time、date、alldatetime、datetime、datetime2 或 datetimeoffset 值的表达式。date 参数可以是表达式、列表达式、用户定义变量或字符串文字。

返回类型

int

返回值

MONTH 返回的值与 DATEPART (month, date) 所返回的值相同。

如果 date 只包含时间部分,则返回值为 1,即基准月。

示例

以下语句将返回 4。这是月份的数字。

代码

SELECT MONTH('2007-04-30T01:01:01.1234567 -07:00');

下面的语句将返回 1900, 1, 1。date 的参量为数字 0。SQL 将 0 解释为 1900 年 1 月 1 日。

代码

SELECT YEAR(0), MONTH(0), DAY(0);

YEAR('2008-11-2 00:00:00') --年

MONTH('2008-11-2 00:00:00') --月

DAY('2008-11-2 00:00:00') --日

DATEPART ( datepart , date )

DATEPART(MM,'2008-11-2 00:00:00')

年份 yy、yyyy

季度 qq、q

月份 mm、m

每年的某一日 dy、y

日期 dd、d

星期 wk、ww

工作日 dw

小时 hh

分钟 mi、n

秒 ss、s

毫秒 ms

select DataName(month,'2008-11-2 00:00:00

select Month('2008-11-2 00:00:00')

sql日期的模糊(like)查询,字断内日期的格式为yyyy-m-d,针对1日与10几日,2日与20几日怎么区分?

SQL CONVERT() 函数

SQL Date 函数

定义和用法

CONVERT() 函数是把日期转换为新数据类型的通用函数。

CONVERT() 函数可以用不同的格式显示日期/时间数据。

语法

CONVERT(data_type(length),data_to_be_converted,style)data_type(length) 规定目标数据类型(带有可选的长度)。data_to_be_converted 含有需要转换的值。style 规定日期/时间的输出格式。

可以使用的 style 值:

Style ID Style 格式

100 或者 0 mon dd yyyy hh:miAM (或者 PM)

101 mm/dd/yy

102 yy.mm.dd

103 dd/mm/yy

104 dd.mm.yy

105 dd-mm-yy

106 dd mon yy

107 Mon dd, yy

108 hh:mm:ss

109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

110 mm-dd-yy

111 yy/mm/dd

112 yymmSELECT 11 AS ID , Convert(VARCHAR(30), GETDATE(), 11 ) AS result UNION ALLdd

113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)

114 hh:mi:ss:mmm(24h)

120 或者 20 yyyy-mm-dd hh:mi:ss(24h)

121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(2declare @dt1 datetime='2013-1-2'4h)

126 yyyy-mm-ddThh:mm:ss.mmm(没有空格)

131 dd/mm/yy hh:mi:ss:mmmAM

实例

下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:

CONVERT(VARCHAR(19),GETDATE())

CONVERT(VARCHAR(10),GETDATE(),110)

CONVERT(VARCHAR(11),GETDATE(),106)

CONVERT(VARCHAR(24),GETDATE(),113)

结果类似:

Dec 29 2008 11:45 PM

12-29-2008

29 Dec 08

29 Dec 2008 16:25:46.635

用121转换一下,就是人习惯的格式了,且3月是03,不出现位数不同的问题,呵呵

like '%-3-1'

sql函数计算半年后的日期

下一秒 2011-02-11 21:27:16.750

SELECT

GETDATE() AS [今天],

DATEADD(mm, 3, GETDATE() ) AS [3月后],

DATEADD(mm, 6, GETDATE() ) AS [6月后]

今天 3月后 6月后

----------------------- -------------select dateadd(q,2,cl_s_time) as '增加2季度后' from class---------- -----------------------

2011-07-16 21:26:11.310 2011-10-16 21:26:11.310 2012-01-16 21:26:11.310

(1 行受影响)

SELECT

GETDATE() AS [今天],

DATEADD(mm, 3, GETDATE() ) AS [3月后],

DATEADD(mm, 6, GETDATE() ) AS [6月后]

今天 3月后 6月后

----------------------- ----------------------- -----------------------

2011-07-16 21:26:11.310 2011-10-16 21:26:11.310 2012-01-16 21:26:11.310

(1 行受影响)

select cast(cast('2011-09-01' as datetime)-getdate() as int)

sqlserver如何根据当前日期获得上月某一天的日期

SELECT 14 AS ID , Convert(VARCHAR(30), GETDATE(), 14 ) AS result UNION ALL

sqlserver如何根据当前日期获得上月某一天的日期

望采纳

--根据当前时间查询上月26号的日期

SELECT CONVERT(varchar(10), CONVERT(varchar(8),dateadd(month,-1,getdate()),23)+'26' , 120)

--根据当前时间查询本月月25号的日期

SELECT CONVERT(varchar(10), CONVERT(varchar(8),dateadd(month,0,getdate()),23)+'25' , 120)

试试select dateadd

例如:向日期加上2天

select dateadd(day,2,'2004-10-15') --返回:2004-10-17 00:00:00.000

DateAdd (interval,number,date) 以interval指定的方式,加上number之后的日期

值 缩 写(Sql ) (Access 和 ASP) 说明

Year Yy yyyy 年 1753 ~ 9999

Month Mm m 月1 ~ 12

Day of year Dy y 一年的日数,一年中的第几日 1-366

Day Dd d 日,1-31

Weekday Dw w 一周的日数,一周中的第几日 1-7

Week Wk ww 周,一年中的第几周 0 ~ 51

Hour Hh h 时0 ~ 23

Minute Mi n 分钟0 ~ 59

Second Ss s 秒 0 ~ 59

Millisecond Ms - 毫秒 0 ~ 999

SELECT CONVERT(CHAR(8),DATEADD(Month,-1,GETDATE()),120)+'25'