簡體   English   中英

如何將mm / dd / yyyy格式的日期轉換為yyyy-mm-dd hh:mi:ss.mmm

[英]How to convert date in mm/dd/yyyy format to yyyy-mm-dd hh:mi:ss.mmm

我正在將數據插入表中,並且在插入之前我需要檢查數據是否存在。

我有一個由兩列datetimeint組成的復合鍵。

在插入之前,我需要檢查表中是否存在具有相同時間和ID的數據。

用戶插入的日期為“ mm / dd / yyyy”。

表格中的datetime數據如下:“ 2016-01-12 00:00:00.000”。 id字段是int

所以,我有一個查詢:

if not exists(select count(*) from table_1 where MyDate = @myDate and id = @id)
insert into table_1 .....

什么是格式化的日期用戶以正確的方式發送到匹配的datetime以表格的形式?

檢查此sqlfiddle有關如何在查詢中使用不同的日期格式。 可能會幫助您解決它。

http://www.sqlfiddle.com/#!2/fd0b7/5

我猜想問題是關於基於語法的SQL Server。 代碼段中的問題遠遠超出了日期格式。

一,表達式:

if not exists(select count(*) from table_1 where MyDate = @myDate and id = @id)

永遠不會返回true,因為子查詢總是返回一行加一列。 如果沒有匹配項,則該列包含0 ,它確實存在。

您打算:

if not exists(select 1 from table_1 where MyDate = @myDate and id = @id)

其次,如果您明智地選擇讓數據庫強制執行唯一性約束,則無需進行此檢查。 因此,在兩列上定義唯一的索引或約束:

create unique index unq_table_1_id_mydate on table_1(id, MyDate);

現在,數據庫不允許您插入重復的值, if有必要,則不會。

接下來,我建議您在應用程序層修復日期格式。 YYYY-MM-DD是ISO標准日期格式,非常合理。 但是,如果您不想這樣做,請使用convert()

insert into table_1(id, MyDate, .....)
    select @id, convert(datetime, @MyDate, 101), . . .

數據庫中的值看起來正確,可以存儲為日期/時間值,因此應該可以正常工作。

您可以使用以下行在SQL Server中將日期轉換為所需的格式:

select FORMAT(@your_date, 'yyyy-MM-dd HH:mm:ss', 'en-US') from Your_Table

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM