Skip to content

Instantly share code, notes, and snippets.

@relyky
Last active December 31, 2015 04:13
Show Gist options
  • Save relyky/3d57e4f7648c320e98a7 to your computer and use it in GitHub Desktop.
Save relyky/3d57e4f7648c320e98a7 to your computer and use it in GitHub Desktop.
T-SQL, date manipulation, 日期操作
-- 當月第一天
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
-- 2015-12-01 00:00:00.000
-- 當月最後一天
SELECT DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE()),-1)
-- 2015-12-31 00:00:00.000
-- 相差年數(有小數)
SELECT DATEDIFF(MONTH, '2011/6/1', GETDATE()) / 12.0
-- 4.500000
-- 相差年數(無條件捨去)
SELECT FLOOR(DATEDIFF(MONTH, '2011/1/1', GETDATE()) / 12)
-- 4
-- 至今相差幾個月份
SELECT DATEDIFF(MONTH, '2015/1/1', GETDATE())
-- 11
-- 年月日格式判斷
IF '0981231' LIKE '[01][0-9][0-9][012][0-9][0123][0-9]'
PRINT 'TRUE';
ELSE
PRINT 'FALSE';
--TRUE
-- 格式轉換
SELECT CONVERT(VARCHAR(20), GETDATE(), 110)
-- 12-31-2015
SELECT CONVERT(VARCHAR(20), GETDATE(), 111)
-- 2015/12/31
SELECT CONVERT(VARCHAR(20), GETDATE(), 112)
-- 20151231
SELECT CONVERT(VARCHAR(20), GETDATE(), 120)
-- 20151231
SELECT CONVERT(VARCHAR(20), GETDATE(), 121)
-- 2015-12-31 12:05:56.
-- 序號編碼:BIGINT → YYYYMM & NNNNNN ; 年月+6碼數字序號
SELECT CAST(CONVERT(VARCHAR(6), GETDATE(), 112) AS BIGINT) * 1000000 + 998
-- 201512000998
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment