321

変数に含まれる値を、フォーマットとしてフォーマットさDateTimeれた変数(時間部分なし)に変換する必要があります。varcharyyyy-mm-dd

それ、どうやったら出来るの?

4

24 に答える 24

271

Microsoft Sql サーバーの場合:

--
-- Create test case
--
DECLARE @myDateTime DATETIME
SET @myDateTime = '2008-05-03'

--
-- Convert string
--
SELECT LEFT(CONVERT(VARCHAR, @myDateTime, 120), 10)
于 2008-09-16T16:52:35.047 に答える
187

次のことを試してください。

CONVERT(varchar(10), [MyDateTimecolumn], 20)

日付だけでなく、完全な日付の時間については、次のようにします。

CONVERT(varchar(23), [MyDateTimecolumn], 121)

変換スタイルについては、次のページを参照してください。

http://msdn.microsoft.com/en-us/library/ms187928.aspx
または
SQLServerCONVERT()関数

于 2008-09-16T16:45:37.310 に答える
39

SQL Server 2012 には新しい関数 FORMAT があります: http://msdn.microsoft.com/en-us/library/ee634924.aspx

また、カスタムの日時形式文字列を使用できます: http://msdn.microsoft.com/en-us/library/ee634398.aspx

これらのページは、SQL2008R2 でも利用できることを暗示していますが、そうであるかどうかをテストするのに便利なものはありません。

使用例 (オーストラリアの日時):

FORMAT(VALUE,'dd/MM/yyyy h:mm:ss tt')
于 2013-07-18T02:58:22.930 に答える
9

使用できますDATEPART(DATEPART, VARIABLE)。例えば:

DECLARE @DAY INT 
DECLARE @MONTH INT
DECLARE @YEAR INT
DECLARE @DATE DATETIME
@DATE = GETDATE()
SELECT @DAY = DATEPART(DAY,@DATE)
SELECT @MONTH = DATEPART(MONTH,@DATE)
SELECT @YEAR = DATEPART(YEAR,@DATE)
于 2012-07-20T21:42:39.313 に答える
8

または: Cast_Convert

の構文CAST:

CAST ( expression AS data_type [ (length ) ])

の構文CONVERT:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

http://msdn.microsoft.com/en-us/library/ms187928.aspx

実際には、特定の形式を要求したため:

REPLACE(CONVERT(varchar(10), Date, 102), '.', '-')
于 2008-09-16T16:46:41.443 に答える
7

-- これにより、'yyyy-mm-dd 00:00:00.000' の形式で時刻が 0 になります。


SELECT CAST( CONVERT(VARCHAR, GETDATE(), 101) AS DATETIME) ; 
于 2011-06-21T18:45:38.083 に答える
6

Microsoft SQL Server の場合:

CONVERT の構文を使用します。

CONVERT ( data_type [ ( length ) ] , expression [ , style ] )

例:

SELECT CONVERT(varchar,d.dateValue,1-9)

スタイルの詳細については、MSDN - Cast and Convert (Transact-SQL) を参照してください。

于 2012-05-30T15:44:23.813 に答える
3

試す:

select replace(convert(varchar, getdate(), 111),'/','-');

mssqlのヒントの詳細

于 2011-06-06T15:32:48.863 に答える
3

次のことを試してください。

CONVERT(VARCHAR(10),GetDate(),102)

次に、「。」を置き換える必要があります。と "-"。

これがhttp://www.mssqltips.com/tip.asp?tip=1145を支援するサイトです

于 2008-09-16T16:50:13.307 に答える
3

これは私がそれを行う方法です:CONVERT(NVARCHAR(10), DATE1, 103) )

于 2013-03-25T17:31:04.263 に答える
3
declare @dt datetime

set @dt = getdate()

select convert(char(10),@dt,120) 

char(10)特定の文字列形式が必要なため、データ長を固定しています。

于 2008-09-26T09:33:52.247 に答える
3

OPは日時形式を述べました。私にとっては、時間の部分が邪魔になります。
フォーマットする前に (datetime を date にキャストすることによって) 時間部分を削除する方が少しきれいだと思います。

convert( varchar(10), convert( date, @yourDate ) , 111 )
于 2011-08-12T13:38:50.693 に答える
2

このSQLを試してください:

select REPLACE(CONVERT(VARCHAR(24),GETDATE(),103),'/','_') + '_'+ 
       REPLACE(CONVERT(VARCHAR(24),GETDATE(),114),':','_')
于 2017-07-10T06:29:18.577 に答える
1

どのデータベースかは言いませんでしたが、mysqlを使用すると、タイムスタンプから日付を取得する簡単な方法があります(varchar型変換は自動的に行われるはずです)。

mysql> select date(now());
+-------------+
| date(now()) |
+-------------+
| 2008-09-16  | 
+-------------+
1 row in set (0.00 sec)
于 2008-09-16T16:49:34.930 に答える
1
CONVERT(VARCHAR, GETDATE(), 23)
于 2014-04-29T16:13:50.250 に答える
0

関数を書く

CREATE FUNCTION dbo.TO_SAP_DATETIME(@input datetime)
RETURNS VARCHAR(14)
AS BEGIN
    DECLARE @ret VARCHAR(14)
    SET @ret = COALESCE(SUBSTRING(REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR(26), @input, 25),'-',''),' ',''),':',''),1,14),'00000000000000');
    RETURN @ret
END
于 2019-08-02T08:43:50.817 に答える
-3

どの言語かはわかりませんC#/.NETが、ネイティブのDateTimeデータ型を持っているためだと思います。その場合、ToStringメソッドを使用して変換し、次のようなフォーマット指定子を使用します。

DateTime d = DateTime.Today;
string result = d.ToString("yyyy-MM-dd");

ただし、これをデータベース クエリで使用したり、SQL ステートメントに連結したりしないように注意してください。データベースでは、特定のフォーマット文字列を使用する必要があります。時間の部分をゼロにして、DateTime を SQL パラメータとして使用することをお勧めします。

于 2008-09-16T16:52:47.403 に答える