㈠ sql server 如何將日期時間欄位修改成最接近該時間的整點時間
*以下語句中的時間欄位以「date_test」為例
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())為參考時間):
selectCAST(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'ASDATETIME)
DATEADD的語法:
--DATEADD(datepart,number,date)——在日期上增加給定日期類型的數量;
selectdateadd(yyyy,4,cl_s_time)as'增加4年後'fromclass--datepart-年份
yy、yyyy
selectdateadd(q,2,cl_s_time)as'增加2季度後'fromclass
--datepart-季度
qq、q
selectdateadd(mm,3,cl_s_time)as'增加3月度後'fromclass
--datepart-月份
mm、m
--datepart-每年的某一日
dy、y
--datepart-日期
dd、d
--datepart-星期
wk、ww
--datepart-小時
hh
--datepart-分鍾
mi、n
--datepart-秒
ss、s
--datepart-毫秒
ms
㈡ sql兩個日期之間怎麼用函數表示
DATEDIFF
返回跨兩個指定日期的日期和時間邊界數。
語法
DATEDIFF ( datepart ,startdate ,enddate )
參數
datepart
是規定了應在日期的哪一部分計算差額的參數。下表列出了 Microsoft® SQL Server™ 識別的日期部分和縮寫。
日期部分縮寫
year yy, yyyy
quarter qq, q
Month mm, m
dayofyear dy, y
Day dd, d
Week wk, ww
Hour hh
minute mi, n
second ss, s
millisecond ms
startdate
是計算的開始日期。startdate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
因為 smalldatetime 只精確到分鍾,所以當用 smalldatetime 值時,秒和毫秒總是 0。
如果您只指定年份的最後兩位數字,則小於或等於"兩位數年份截止期"配置選項的值的最後兩位數字的數字所在世紀與截止年所在世紀相同。大於該選項的值的最後兩位數字的數字所在世紀為截止年所在世紀的前一個世紀。例如,如果 two digit year cutoff 為 2049(默認),則 49 被解釋為 2049,2050 被解釋為 1950。為避免模糊,請使用四位數的年份。
有關時間值指定的更多信息,請參見時間格式。有關日期指定的更多信息,請參見 datetime 和 smalldatetime。
enddate
是計算的終止日期。enddate 是返回 datetime 或 smalldatetime 值或日期格式字元串的表達式。
返回類型
integer
注釋
startdate 是從 enddate 減去。如果 startdate 比 enddate 晚,返回負值。
當結果超出整數值范圍,DATEDIFF 產生錯誤。對於毫秒,最大數是 24 天 20 小時 31 分鍾零 23.647 秒。對於秒,最大數是 68 年。
計算跨分鍾、秒和毫秒這些邊界的方法,使得 DATEDIFF 給出的結果在全部數據類型中是一致的。結果是帶正負號的整數值,其等於跨第一個和第二個日期間的 datepart 邊界數。例如,在 1 月 4 日(星期日)和 1 月 11 日(星期日)之間的星期數是 1。
示例
此示例確定在 pubs 資料庫中標題發布日期和當前日期間的天數。
USE pubs
GO
SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days
FROM titles
GO
㈢ sql server自定義函數中有兩時間參數如何判斷兩個時間年月日是否相同求高手幫忙解決 謝謝
declare @dt1 datetime='2013-1-2'
declare @dt2 datetime='2013-5-1'
declare @dt1 datetime='2013-1-2'
declare @dt2 datetime='2013-5-1'
if(year(@dt1)=year(@dt2))
print '年相同'
if(month(@dt1)=month(@dt2))
print '月相同'
if(day(@dt1)=day(@dt2))
print '日相同'用year()month() day()方法獲取參數變數的值進行比較
㈣ sql2005裡面如何實現2個日期欄位,輸入第1個之後,第2個的值等於第一個
1、 CREATE TABLE [dbo].[Table_1]( [begintime] [datetime] NULL, [endtime] AS ([begintime]) ) 能實現只要插入begintime後,endtime的值等於begintime 2、 覺的跟第一個有點矛盾。 3、你可以建個視圖,把兩個欄位拼接起來就等同於一個欄位了。也就可以放在一個格里 。
麻煩採納,謝謝!
㈤ 如何在SQL中比較兩個時間相等
首先這倆欄位是時間類的欄位,或者至少你得保證按時間格式存儲的文本
datediff(day,datetime1,datetime2) =0
精確到day是不是一樣的
datediff(hh,datetime1,datetime2) =0
精確到小時是不是一樣的
。。。
㈥ 求助SQL如何判斷兩個表裡的日期是否相同
根據給的鏈接地址,兩表相同的列應該是jh,如果是要A表中的所有數據以及B表中的某些數據不妨用外聯好了
select * from a left join b on a.jh= b.jh where to_char(a.rq,"yyyy-MM-dd")=to_char(b.rq,"yyyy-MM-dd"),這樣行不行呢?
㈦ sql語句問題,查詢相近日期的SQL語句怎麼寫
select *
from title
where 發布日期 between DATEADD(DAY,-2,GETDATE()) and DATEADD(DAY,2,GETDATE())
㈧ SQL中兩個日期的查詢語句怎麼寫
1、創建測試表,
create table test_date(id int, v_date date);
㈨ sql 語句中如何比較當前時間與指定時間是否相同
代碼的思路:
兩個時間的相差的秒數,當等於0時,說明兩日期相同。
getdate()表示獲取當前系統時間
sql 語句中比較當前時間與指定時間是否相同參考代碼如下:
select datediff(second,'2012-12-15 16:54:00',getdate())
(9)sql中怎樣實現兩個日期相近擴展閱讀:
GETDATE() 函數從 SQL Server 返回當前的時間和日期。
語法:GETDATE()
實例如下
使用下面的 SELECT 語句:
SELECT GETDATE() AS CurrentDateTime
結果:
CurrentDateTime
2008-12-29 16:25:46.635
注釋:上面的時間部分精確到毫秒。
㈩ 高分 sql語句,求兩個日期之間的數據~~
我常用informix資料庫,應該和sqlserver差別不大,月日即可,我用日期時一般就是varchar,月日之間用符號分隔,一般都用『-』
比如你的是person表,欄位有'人'
varchar(10),'生日'
varchar(5)
張三
01-02
李四
05-04
王五
06-01
select
人,生日
from
person
where
'01-01'<=生日
and
生日<='05-05'
直接大於小於就行了,不會有遺漏的。
附:
在informix中可以實現直接日期想減,
to_date('2008-10-10','%Y-%m-%d')-to_date('2008-09-27','%Y-%m-%d')
就行了,在sql中不知道可不可以,你再查下。