sql时间比较问题 convert(varchar(10),时间1,120) = convert(varchar(10),时间2,120) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 2用触发器--以下代码生成的编号长度为12,前6位为日期信息,格式为YYMMDD,后6位为流水号。--创建得到当前日期的视图CREATE VIEW v_GetDateASSELECT dt=CONVERT(CHAR(6),GETDATE(),12)GO--得到新编号的函数CREATE FUNCTION f_NextBH()RETURNS char(12)ASBEGIN DECLARE @dt CHAR(6) SELECT @dt=dt FROM v_GetDate RETURN( SELECT @dt+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6) FROM tb WITH(XLOCK,PAGLOCK) WHERE BH like @dt+'%')ENDGO--在表中应用函数CREATE TABLE tb(BH char(12) PRIMARY KEY DEFAULT dbo.f_NextBH(),col int)--插入资料INSERT tb(col) VALUES(1)INSERT tb(col) VALUES(2)INSERT tb(col) VALUES(3)DELETE tb WHERE col=3INSERT tb(col) VALUES(4)INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)--显示结果SELECT * FROM tb/*--结果BH col ------------------- ----------- 050405000001 1050405000002 2050405000003 4050405000004 14--*/ datediff(d,'2008-05-14 16:08:02.187','2008-05-14 18:10:39.967') = 0 1.对日期,可比较字符串或比较年月日 比较字符串 convert(char(10),日期1,120)=convert(char(10),日期2,120) 比较年月日 year(日期1)=year(日期2) and month(日期1)=month(日期2) and day(日期1)=day(日期2)2.记录变化,在触发器中只要求出当日的最大数,再加1,得出最大值,再插入数据即可,对相应字段建索引,可加快查询速度 DATEDIFF ( datepart , startdate , enddate ) 返回跨越两个指定日期的日期和时间边界的数目。 日期部分 缩写 年份 yy、yyyy 季度 qq、q 月份 mm、m 每年的某一日 dy、y 日期 dd、d 星期 wk、ww 工作日 dw 小时 hh 分钟 mi、n 秒 ss、s 毫秒 ms 反正你加入的标号是依据时间的顺序的.你显示的时候在自己从1开始加入连续的序号不就行了吗?何必这么多余的费时费事呢?完全没有必要使用这种方法去实现,这属于设计上的低级错误.我开发数据库有六,七年时间了.也没有预见这样设计的,将来维护数据的时候如果客户从连续序号记录中间删除若干条记录或增加若干条记录,这是你的显示序号的数据更新就会变得非常烦琐.在此建议:把日前字段改为datetime类型,即可完成自动排序. 再问统计多列百分比 求一SQL语句 如何让变量自动加一,@w=@w+1抱错 SSIS包执行报错:聚合或其它SET 操作消除了空值 Sql分组汇总 用一个sql 这种参数怎么传递。 添加记录时出错? 我想做数据库同步,可我的sql server注册是local,我现在想把它改成计算机名,改不掉!怎么办呢? 如何选择一个表的中间一段数据? 怎样知道删除的是哪一行? 谁知道这条sql语句怎么写(在线等)? mysql 乱码问题
用触发器--以下代码生成的编号长度为12,前6位为日期信息,格式为YYMMDD,后6位为流水号。
--创建得到当前日期的视图
CREATE VIEW v_GetDate
AS
SELECT dt=CONVERT(CHAR(6),GETDATE(),12)
GO--得到新编号的函数
CREATE FUNCTION f_NextBH()
RETURNS char(12)
AS
BEGIN
DECLARE @dt CHAR(6)
SELECT @dt=dt FROM v_GetDate
RETURN(
SELECT @dt+RIGHT(1000001+ISNULL(RIGHT(MAX(BH),6),0),6)
FROM tb WITH(XLOCK,PAGLOCK)
WHERE BH like @dt+'%')
END
GO--在表中应用函数
CREATE TABLE tb(
BH char(12) PRIMARY KEY DEFAULT dbo.f_NextBH(),
col int)--插入资料
INSERT tb(col) VALUES(1)
INSERT tb(col) VALUES(2)
INSERT tb(col) VALUES(3)
DELETE tb WHERE col=3
INSERT tb(col) VALUES(4)
INSERT tb(BH,col) VALUES(dbo.f_NextBH(),14)--显示结果
SELECT * FROM tb
/*--结果
BH col
------------------- -----------
050405000001 1
050405000002 2
050405000003 4
050405000004 14
--*/
比较字符串
convert(char(10),日期1,120)=convert(char(10),日期2,120)
比较年月日
year(日期1)=year(日期2) and month(日期1)=month(日期2) and day(日期1)=day(日期2)2.记录变化,在触发器中只要求出当日的最大数,再加1,得出最大值,再插入数据即可,对相应字段建索引,可加快查询速度
返回跨越两个指定日期的日期和时间边界的数目。 日期部分 缩写
年份
yy、yyyy
季度
qq、q
月份
mm、m
每年的某一日
dy、y
日期
dd、d
星期
wk、ww
工作日
dw
小时
hh
分钟
mi、n
秒
ss、s
毫秒
ms