回答
像這樣的東西應該工作:
insert into TableName(DateColumn)
select convert(datetime,getDate(),103)
121是yyyy-mm-dd – pjp 2009-09-04 13:35:38
@pjp:所以現在已經糾正了。 – 2009-09-04 13:37:53
+1 - 轉換函數應該做你需要的。 – 2009-09-04 13:40:16
我不知道,我完全跟隨,但如果你正在服用'dd/mm/yy'形式的datetime
,並試圖將其轉換爲形式爲yyyy-dd-mm
的varchar(10)
,然後我認爲喲日子會把你需要轉換爲varchar,然後用SUBSTRING
,LEFT
和RIGHT
拔出你需要的數據:
declare @dt datetime
select @dt = getdate() -- i.e. 04/09/2009
declare @str varchar(8)
select @str = convert(varchar(8),@dt,112) --gives 20090904
select LEFT(@str,4) + '-' + RIGHT(@str,2) + '-' + SUBSTRING(@str,5,2) -- gives 2009-04-09
這是不漂亮,但它的工程!
我寧願去尋求更爲一般的日期格式化功能,而不是根據具體情況逐個格式化格式:) – pjp 2009-09-04 13:53:31
採取從http://anubhavg.wordpress.com/2009/06/11/how-to-format-datetime-date-in-sql-server-2005/
一起來看看這款定製的日期格式功能,這可以讓你在任何你想要的格式的日期。不過,我不知道爲什麼你想要一個YYYY-DD-MM
格式的日期,因爲這是非標準的。
————
– SQL datetime functions
– SQL Server date formats
– T-SQL convert dates
– Formatting dates sql server
CREATE FUNCTION dbo.fnFormatDate (@Datetime DATETIME, @FormatMask VARCHAR(32))
RETURNS VARCHAR(32)
AS
BEGIN
DECLARE @StringDate VARCHAR(32)
SET @StringDate = @FormatMask
IF (CHARINDEX ('YYYY',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'YYYY',
DATENAME(YY, @Datetime))
IF (CHARINDEX ('YY',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'YY',
RIGHT(DATENAME(YY, @Datetime),2))
IF (CHARINDEX ('Month',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'Month',
DATENAME(MM, @Datetime))
IF (CHARINDEX ('MON',@StringDate COLLATE SQL_Latin1_General_CP1_CS_AS)>0)
SET @StringDate = REPLACE(@StringDate, 'MON',
LEFT(UPPER(DATENAME(MM, @Datetime)),3))
IF (CHARINDEX ('Mon',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'Mon',
LEFT(DATENAME(MM, @Datetime),3))
IF (CHARINDEX ('MM',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'MM',
RIGHT('0'+CONVERT(VARCHAR,DATEPART(MM, @Datetime)),2))
IF (CHARINDEX ('M',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'M',
CONVERT(VARCHAR,DATEPART(MM, @Datetime)))
IF (CHARINDEX ('DD',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'DD',
RIGHT('0'+DATENAME(DD, @Datetime),2))
IF (CHARINDEX ('D',@StringDate) > 0)
SET @StringDate = REPLACE(@StringDate, 'D',
DATENAME(DD, @Datetime))
RETURN @StringDate
END
然後你就可以調用這個: SELECT dbo.fnFormatDate (getdate(), 'YYYY-DD-MM')
+1 For純粹的努力 - 不錯的一個! – butterchicken 2009-09-04 13:52:35
嗯投票戰爭...有趣的遊戲兒童...請任何downvotes留下評論。 – pjp 2009-09-04 13:59:43
我們不知道YY
在DD/MM/YY
是否是當前一個世紀以前的世紀。例如,如果YY
是15
,我們不知道這是否是1915
或2015
。所以0到15之間的數字將被視爲當前世紀。如果當前是2016年,那麼0到16之間的數字將被視爲當前世紀(其動態)。
例
- 當
YY
是15
,然後YYYY
將2015
。 - 當
YY
是97
時,那麼YYYY
將是1997
。
QUERY
DECLARE @DATECOL VARCHAR(13) = '25/01/15'
SELECT CASE WHEN RIGHT(@DATECOL,2) BETWEEN 0 AND CAST(RIGHT(YEAR(GETDATE()),2)AS INT)
THEN '20' + RIGHT(@DATECOL,2) ELSE '19' + RIGHT(@DATECOL,2) END
+ '-' + LEFT(@DATECOL,2) + '-' + LEFT(RIGHT(@DATECOL,5),2)
- 1. SQL將'DDMMYY'轉換爲datetime
- 2. 將DDMMYY號碼轉換爲日期嗎?
- 3. 將MySQL轉換爲SQL Server
- 4. 將SQL Server轉換爲Oracle
- 5. 將ORA_HASH轉換爲SQL Server
- 6. 將SQL轉換爲ServiceStack.ORMLite Sql Server
- 7. 將SQL Server 2012轉換爲SQL Azure
- 8. 將行轉換爲列SQL Server,T-SQL
- 9. 將PL-SQL轉換爲SQL Server
- 10. SQL Server將行轉換爲列
- 11. 將TO_DATE從ORACLE轉換爲SQL SERVER
- 12. 在SQL Server中將varchar轉換爲datetime
- 13. 將列轉換爲SQL Server中的行
- 14. sql-server:將Char(14)轉換爲Datetime?
- 15. 將SQL Server 2008轉換爲2000
- 16. 將MySQL腳本轉換爲SQL Server
- 17. SQL Server將列轉換爲標識列
- 18. 在sql server中將nvarchar轉換爲smalldatetime
- 19. 將VARCHAR轉換爲數字SQL Server
- 20. SQL Server將字符串轉換爲datetime
- 21. SQL Server:將行轉換爲一行
- 22. SQL Server將行轉換爲新表
- 23. 將行轉換爲列SQL Server 2012
- 24. 將時代轉換爲DateTime SQL Server
- 25. 將Oracle或Sql Server DDL轉換爲Derby
- 26. 將Float轉換爲十進制(SQL Server)
- 27. SQL Server:將StartDATE 20140804 Nvarchar轉換爲Datetime2
- 28. 將SQL Server腳本轉換爲PostgreSQL
- 29. 將舊的「+」轉換爲SQL Server語法?
- 30. 將ms sql server轉換爲mysql
是日期datetime或(VAR)字符? – pjp 2009-09-04 13:32:31
這是一個日期時間 – madphp 2009-09-04 13:33:17
也應該是YYYY-DD-MM – pjp 2009-09-04 13:34:02