
weekday (dw) 日期部分返回对应于星期中的某天的数,例如:Sunday = 1、Saturday = 7。weekday 日期部分产生的数取决于 SET DATEFIRST 设定的值,此命令设定星期中的第一天。
这里就是判断 datepart 返回的 数 在 1-7 内
取得当前时间用 now() 就行。
在数据库中格式化时间 用DATE_FORMA T(date, format)
根据格式串format 格式化日期或日期和时间值date,返回结果串。
可用DATE_FORMAT( ) 来格式化DATE 或DATETIME 值,以便得到所希望的格式。根据format字符串格式化date值:
%S, %s 两位数字形式的秒( 00,01, , 59)
%i 两位数字形式的分( 00,01, , 59)
%H 两位数字形式的小时,24 小时(00,01, , 23)
%h, %I 两位数字形式的小时,12 小时(01,02, , 12)
%k 数字形式的小时,24 小时(0,1, , 23)
%l 数字形式的小时,12 小时(1, 2, , 12)
%T 24 小时的时间形式(h h : m m : s s)
%r 12 小时的时间形式(hh:mm:ss AM 或hh:mm:ss PM)
%p AM 或P M
%W 一周中每一天的名称( S u n d a y, Monday, , Saturday)
%a 一周中每一天名称的缩写( Sun, Mon, , Sat)
%d 两位数字表示月中的天数( 00, 01, , 31)
%e 数字形式表示月中的天数( 1, 2, , 31)
%D 英文后缀表示月中的天数( 1st, 2nd, 3rd, )
%w 以数字形式表示周中的天数( 0 = S u n d a y, 1=Monday, , 6=Saturday)
%j 以三位数字表示年中的天数( 001, 002, , 366)
% U 周(0, 1, 52),其中Sunday 为周中的第一天
%u 周(0, 1, 52),其中Monday 为周中的第一天
%M 月名(J a n u a r y, February, , December)
%b 缩写的月名( J a n u a r y, February, , December)
%m 两位数字表示的月份( 01, 02, , 12)
%c 数字表示的月份( 1, 2, , 12)
%Y 四位数字表示的年份
%y 两位数字表示的年份
%% 直接值“%”
select date_format(日期字段,’%Y-%m-%d’) as ‘日期’ from test
使用datename函数,获取日期的月份。
例:表table中的rq字段
SQL语句如下:
selectdate(mm,rq)fromtable
相关日期、时间的提取方法还有:
年份datename(yy,rq)
月份datename(mm,rq)
日datename(dd,rq)
小时datename(hh,rq)
分钟datename(n,rq)//不是m,也不是mm
日期/时间函数,返回当前本地日期。
CURRENT_DATE 不带任何参数。它将当前本地日期作为数据类型 DATE 返回。不允许使用参数括号。 CURRENT_DATE 返回此时区的当前本地日期;它根据本地时间变量(如夏令时)进行调整。
在逻辑模式下 CURRENT_DATE 以 $HOROLOG 格式返回当前本地日期;
例如, 64701 。
显示模式下的 CURRENT_DATE 以区域设置的默认格式返回当前本地日期。
例如,在美国的区域设置为 02/22/2018 ,在欧洲的区域设置为 22/02/2018 ,在俄罗斯的区域设置为 22022018 。
要指定不同的日期格式,请使用 TO_DATE 函数。要更改默认日期格式,请将 SET OPTION 命令与 DATE_FORMAT 、 Year_OPTION 或 DATE_SEFACTOR 选项配合使用。
要仅返回当前日期,请使用 CURRENT_DATE 或 CURDATE 。这些函数以 DATE 数据类型返回它们的值。 CURRENT_TIMESTAMP 、 GETDATE 和 NOW 函数也可用于将当前日期和时间作为 TIMESTAMP 数据类型返回。
请注意,除 GETUTCDATE 之外,所有 SQL时间和日期函数都特定于本地时区设置。要获得通用的当前时间戳(独立于时区),可以使用 GETUTCDATE 或ObjectScript $ZTIMESTAMP 特殊变量。
使用嵌入式SQL时,这些数据类型的执行方式不同。 DATE 数据类型将值存储为 $HOROLOG 格式的整数;当在SQL中显示时,它们将转换为日期显示格式;当从嵌入式SQL返回时,它们将作为整数返回。 TIMESTAMP 数据类型以相同的格式存储和显示其值。可以使用 CONVERT 函数更改日期和时间的数据类型。
CURRENT_DATE 可以用作 CREATE TABLE 或 ALTER TABLE 中的默认规范关键字。
下面的示例返回转换为显示模式的当前日期:
下面的嵌入式SQL示例返回存储的当前日期。由于此日期以 $HOROLOG 格式存储,因此将以整数形式返回:
以下示例显示如何在 WHERE 子句中使用 CURRENT_DATE 返回最近 1000 天内出生的人的记录:
if
exists
(select
from
dbosysobjects
where
id
=
object_id(N
'[dbo][p_getlinkinfo]
')
and
OBJECTPROPERTY(id,
N
'IsProcedure
')
=
1)
drop
procedure
[dbo][p_getlinkinfo]
GO
/--获取连接SQL服务器的信息
所有连接本机的: *** 作的数据库名,计算机名,用户名,网卡物理地址,IP地址,程序名
--邹建
200311(引用请保留此信息)--/
/--调用示例
--显示所有本机的连接信息
exec
p_getlinkinfo
--显示所有本机的连接信息,包含ip地址
exec
p_getlinkinfo
@includeip=1
--显示连接指定数据库的信息
exec
p_getlinkinfo
'客户资料
'
--/
create
proc
p_getlinkinfo
@dbname
sysname=null,
--要查询的数据库名,默认查询所有数据库的连接信息
@includeip
bit=0
--是否显示IP地址,因为查询IP地址比较费时,所以增加此控制
as
declare
@dbid
int
set
@dbid=db_id(@dbname)
create
table
#tb(id
int
identity(1,1),dbname
sysname,hostname
nchar(128),loginname
nchar(128),net_address
nchar(12),net_ip
nvarchar(15),prog_name
nchar(128))
insert
into
#tb(hostname,dbname,net_address,loginname,prog_name)
select
distinct
hostname,db_name(dbid),net_address,loginame,program_name
from
mastersysprocesses
where
hostname
<>
'
'
and
(@dbid
is
null
or
dbid=@dbid)
if
@includeip=0
goto
lb_show
--如果不显示IP地址,就直接显示
declare
@sql
varchar(500),@hostname
nchar(128),@id
int
create
table
#ip(hostname
nchar(128),a
varchar(200))
declare
tb
cursor
local
for
select
distinct
hostname
from
#tb
open
tb
fetch
next
from
tb
into
@hostname
while
@@fetch_status=0
begin
set
@sql=
'ping
'+@hostname+
'
-a
-n
1
-l
1
'
insert
#ip(a)
exec
masterxp_cmdshell
@sql
update
#ip
set
hostname=@hostname
where
hostname
is
null
fetch
next
from
tb
into
@hostname
end
update
#tb
set
net_ip=left(a,patindex(
'%:%
',a)-1)
from
#tb
a
inner
join
(
select
hostname,a=substring(a,patindex(
'Ping
statistics
for
%:%
',a)+20,20)
from
#ip
where
a
like
'Ping
statistics
for
%:%
')
b
on
ahostname=bhostname
lb_show:
select
id,数据库名=dbname,客户机名=hostname,用户名=loginname
,网卡物理地址=net_address,IP地址=net_ip,应用程序名称=prog_name
from
#tb
go
SQL SERVER查询时间是一年中第几周,使用函数 datepart()。
例:查询 ‘2017-1-1’是2017年的第几周,语句如下
select datepart(wk,'2017-1-1')datepart函数说明
一、函数功能:DATEPART() 函数用于返回日期/时间的单独部分,比如年、月、日、小时、分钟等等。
二、语法:DATEPART(datepart,date)
三、参数说明:date 参数是合法的日期表达式。datepart 参数可以是下列的值:
四、实例演示
假设我们有下面这个 "Orders" 表:
我们使用如下 SELECT 语句:
SELECT DATEPART(yyyy,OrderDate) AS OrderYear,DATEPART(mm,OrderDate) AS OrderMonth,
DATEPART(dd,OrderDate) AS OrderDay
FROM Orders
WHERE OrderId=1
结果:
1DateAdd ( I , N , D )
将一个日期加上一段期间后的日期。 I :设定一个日期( Date )所加上的一段期间的单位。譬如 interval="d" 表示 N的单位为日。 I的设定值如下:
yyyy Year 年
q Quarter 季
m Month 月
d Day 日
w Weekday 星期
h Hour 时
n Minute 分
s Second 秒
N :数值表达式,设定一个日期所加上的一段期间,可为正值或负值,正值表示加(结果为 >date 以后的日期),负值表示减(结果为 >date 以前的日期)。
D :待加减的日期。
例子: DateAdd ( "m" , 1 , "31-Jan-98")
结果: 28-Feb-98
说明:将日期 31-Jan-98 加上一个月,结果为 28-Feb-98 而非 31-Fe-98 。
例子: DateAdd ( "d" , 20 , "30-Jan-99")
结果: 1999/2/9
说明:将一个日期 30-Jan-99 加上 20 天后的日期。
2Day( 日期的字符串或表达式 )
传回日期的「日」部份。
例子: Day(" 12/1/1999 ")
结果: 1
3DateDiff (I , D1 , D2[,FW[,FY]])
计算两个日期之间的期间。
I :设定两个日期之间的期间计算之单位。譬如 >I="m" 表示计算的单位为月。 >I 的设定值如:
yyyy > Year 年
q Quarter 季
m Month 月
d Day 日
w Weekday 星期
h Hour 时
n Minute 分
s Second 秒
D1 ,D2:计算期间的两个日期表达式,若 >date1 较早,则两个日期之间的期间结果为正值;若 >date2 较早, 则结果为负值。
FW :设定每周第一天为星期几, 若未设定表示为星期天。 >FW 的设定值如下:
0 使用 >API 的设定值。
1 星期天
2 星期一
3 星期二
4 星期三
5 星期四
6 星期五
7 星期六
FY :设定一年的第一周, 若未设定则表示一月一日那一周为一年的第一周。 >FY 的设定值如下:
0 使用 >API 的设定值。
1 一月一日那一周为一年的第一周
2 至少包括四天的第一周为一年的第一周
3 包括七天的第一周为一年的第一周
例子: DateDiff ("d","25-Mar-99 ","30-Jun-99 ")
结果: 97
说明:显示两个日期之间的期间为 97 天
想查询2007年2月9日的付款流水有单笔交易出现多张小票号的情况的小票号
这个要看一下你的表结构是什么样的啊?
以上就是关于SQL日期函数全部的内容,包括:SQL日期函数、My SQL取得当前时间的函数是什么格式化日期的函数是什么、如何获取数据库中日期的月份(用SQL函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)