我有一個變量是datetime類型。我怎樣才能得到shortdatetostring()作爲日期時間變量類型?我有一個數據庫中的列作爲日期時間類型。我想獲得在某一天添加的記錄。解析日期時間參數
實施例:
SELECT id FROM database WHERE added like @p1
查詢的參數是一個日期時間的變量。
我有一個變量是datetime類型。我怎樣才能得到shortdatetostring()作爲日期時間變量類型?我有一個數據庫中的列作爲日期時間類型。我想獲得在某一天添加的記錄。解析日期時間參數
實施例:
SELECT id FROM database WHERE added like @p1
查詢的參數是一個日期時間的變量。
符合以下。不要使用字符串,因爲匹配很慢。
SELECT id
FROM database
WHERE Datepart(yy, added) = Datepart(yy, @p1)
AND Datepart(mm, added) = Datepart(mm, @p1)
AND Datepart(dd, added) = Datepart(dd, @p1)
和我如何才能得到只有yy,mm ,從日期時間變量dd? –
只是在日期時間直接傳入參數,所以@ p1是日期時間 –
你可以做這樣的事情,以便在1月26日獲得所有的ID。
SELECT id FROM database WHERE added >= '2012-01-26' and added < '2012-01-27'
這應該是'> =',否則你會錯過任何表示午夜的值。 – phoog
我的問題:我怎樣才能得到這個'2012-01-26'在C#語言。我的意思是dynamiclly –
謝謝phoog!我編輯了我的答案 –
在C#中,您可以像下面這樣做。
DateTime dt;
string Temp1 = "Your Date";
if (DateTime.TryParse(Temp1, out dt))
{
// If it is a valid date
string date = dt.ToShortDateString();
string time = dt.ToShortTimeString();
}
在SQL Server
SELECT id FROM database WHERE Datepart(dd, added) = Datepart(dd, @p1)
請參閱基於日,月,日期變量的年樣本
create table #temp
(
dat datetime,
)
insert into #temp(dat)values(GETDATE())
insert into #temp(dat)values(GETDATE()+1)
insert into #temp(dat)values(GETDATE()+2)
select * from #temp where DATEPART(dd, dat) > 27
drop table #temp
它不工作..添加列是日期時間。 @parametername也應該是日期時間.. –
請檢查我編輯的日期部分在SQL查詢樣本usuage – Pankaj
dd = day?仍然不是我想要的.. dd應該是另一個參數? –
如果您使用參數化查詢,則datetime類型的格式無關緊要。 必須記住,「2012-01-26」是一個字符串不是日期....
如果你需要一個日期格式化一個特定的方式,然後myDateTime.ToString(....),有幾個重載,其中之一是一個簡單的格式字符串例如「yyyy-MM-dd」
如果你想將一個字符串解析成一個日期時間然後DateTime.Parse(...),再次有幾個重載。
更多關於日期評論
DateTime.Parse後( 「2012年12月31日」)爲您提供在C#中的日期時間類型。 它將字符串解析爲DateTime
MyDateTime.ToString(「MM/dd/yyyy」)爲您提供指定格式的日期字符串。
「31/12/2012」不是日期,如果你想把它作爲日期,那麼你將它解析爲一個日期。
現在您要將DateTime轉換爲字符串,還是將字符串轉換爲DateTime,還是要求完全不同的東西?
如果你只想解析日期時間格式爲mm/dd/yyyy的日期,你不能這樣做,因爲當它是字符串的時候,從6月8日起根本沒辦法告訴8月6日,除非你假設格式始終是mm/dd/yyyy,這幾乎可以確保在某個點出現嚴重錯誤,這就是爲什麼從Date到String YYYYMMDD或YYYY-MM-DD時要走的路。
如果這是你想要/要做什麼,然後
DateTime MyDateTime = DateTime.Parse("12/31/2012",CultureInfo.CurrentCulture);
傳遞的格式字符串不適合的模式,它會拋出一個異常,NB,將包括「三一/ 12/2012" 。
CultureInfo位於System.Globalisation命名空間中。
這裏有很多選項。 Current,CurrentUI,Invariant等。您使用哪一個取決於您如何設置和全球化/國際化要求(即使它們沒有)。因此,使用「當前文化」將假設美國的默認區域設置。但是如果我要運行你的代碼,那麼「2012年12月31日」將起作用,「2012年12月31日」將吹響大塊。
如果您想要修復這些格式,無論它們在哪個系統上運行,那麼InvariantCulture都是您的選擇。不要忘記設置中性語言。點擊項目屬性頁面的應用程序選項卡上的程序集按鈕。中性語言在底部附近下跌。想必你想要我們。
如果您不希望錯誤時拋出那麼它的
DateTime myDateTime;
if (DateTime.TryParse("12/31/2012",CultureInfo.CurrentCulture, out myDateTime)
{
// do something with myDateTime...
}
else
{
// do something about the value not being in the correct format
}
From DateTime.Parse我只想得到mm/dd/yyyy –
這是倒退! –
您可能能夠通過編輯查詢,以簡化這個,其實。嘗試
select id from database where cast(added as date) = cast(@p1 as date)
這(有效)條從added
時間以及來自@p1
時間,只有日期進行比較。
'like'用於字符串比較,使用'%'通配符,而不是用於日期時間列 –
是啊..我幾秒鐘前讀到它.. –
您可能可以通過編輯查詢來簡化它,實際上。嘗試從數據庫中選擇id(其中添加日期)= cast(@ p1 as date)'這(有效地)從'added'中刪除時間以及從@ p1開始的時間並僅比較日期。 – EtherDragon